#include<iostream>
#include<cstdio>
using namespace std;
const int N=1e6+10,K=1e8+10;
unsigned long long n,m,c,k,a[N],p[N],q[N],lop[N];
bool uio[K],ui[101];
unsigned long long pow(unsigned long long x,int a){
unsigned long long ans=1;
for(int i=1;i<=a;i++) ans*=x;
return ans;
}
int main()
{
cin>>n>>m>>c>>k;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=m;i++){
cin>>p[i]>>q[i];
lop[p[i]]=q[i];
}
for(int i=1;i<=n;i++){
int cnt=0;
while(a[i]>0){
if(a[i]&1){
uio[lop[cnt]]=1;
ui[cnt]=1;
}
a[i]>>=1;
cnt++;
}
}
int cnt=0;
for(int i=1;i<=m;i++){
if(uio[q[i]]==0&&ui[p[i]]==0) {
// cout<<i<<endl;
ui[p[i]]=1,uio[q[i]]=1;
cnt++;
}
}
// cout<<cnt<<endl;
cout<<pow((unsigned long long)2,k-cnt)-n;
return 0;
}