#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;
}