#include<bits/stdc++.h>
#define int long long
#define ULL unsigned long long
using namespace std;
const int N=1e6+10;
int a[N],p[N],q[N],b[70];
ULL p2[70];
vector<int>f[100];
int can[70];
unordered_map<int,bool>mp;
void init(){
p2[0]=1;
for(int i=1;i<=63;i++)p2[i]=p2[i-1]*2;
return;
}
signed main(){
init();
int n,m,c,k;
scanf("%lld%lld%lld%lld",&n,&m,&c,&k);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
ULL k=a[i];
for(int j=63;j>=0;j--){
if(k>=p2[j]){
k-=p2[j];
b[j]=1;
}
}
}
for(int i=1;i<=m;i++){
scanf("%lld%lld",&p[i],&q[i]);
f[p[i]].push_back(q[i]);
}
for(int i=0;i<=63;i++){
if(!b[i])continue;
for(int to:f[i])mp[to]=1;
}
int x=0;
for(int i=1;i<=m;i++){
if(!mp[q[i]]){
if(!can[i])x++;
can[p[i]]=1;
}
}
x=k-x;
ULL ans=p2[x]-n;
printf("%llu\n",ans);
return 0;
}