#include<bits/stdc++.h> using namespace std; typedef unsigned long long ull; ull cnt,ans,n,m,c,k,sum; int a[70];/*!ull*/ typedef long long ll; int main() { // cin>>n>>m>>c>>k; scanf("%llu%llu%llu%llu",&n,&m,&c,&k); if(n==0&&m==0&&k==64) { printf("18446744073709551616"); return 0; } for(int i=1; i<=n; i++) { ull x; // cin>>x; scanf("%llu",&x); cnt=cnt|x;//制作饲料清单 } for(int i=1; i<=m; i++) { // cout<<m<<endl; int x,y; scanf("%d%d",&x,&y); // cin>>x>>y; a[x]=y;//标记当前位数有要求 } for(int i=0; i<64; i++) { if((cnt&(1ll<<i))/*!()*/&&a[i])//表示当前位数满足条件 a[i]=0; } for(int i=0; i<64; i++) { if(a[i]) sum++;//找有多少不满足要求的 } /*ans=1ll<<k; ans-=n; ans-=(1ll<<(k-sum))*((1ll<<sum)-1); // cout<<ans<<endl; //这样写会爆 ull*/ ans=1ll<<(k-1); ans-=n; ans+=(1ll<<(k-1)); ans-=((1ll<<sum)-1)*(1ll<<(k-sum)); //类似位运算的题目尽量考虑大小问题 printf("%llu",ans); return 0; }