#include<iostream>
#include<cstdio>
using namespace std;
int n,m,c,k;
int a[1000005];
__int128 ans=1;
__int128 bol=0;
bool need[65];
bool provide[65];
void write(__int128 x)
{
if(x<0)
putchar('-'),x*=-1;
if(x/10)
write(x/10);
putchar(x%10+'0');
}
void apart()
{
int tmp=0;
while(bol)
{
need[tmp]=bol%2;
bol=bol>>1;
tmp++;
}
}
int main()
{
scanf("%d%d%d%d",&n,&m,&c,&k);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
bol|=a[i];
}
// write(bol);
// cout<<'\n';
apart();
for(int i=1;i<=m;i++)
{
int p,q;
scanf("%d%d",&p,&q);
provide[p]=1;
}
for(int i=0;i<=k-1;i++)
{
if(!(need[i]==0&&provide[i]==1))
{
ans=ans<<1;
}
}
write(ans-n);
return 0;
}