#include<bits/stdc++.h>
using namespace std;
inline void readi(int &x){
x=0;
int y=1;
char a;
a=getchar();
while(a<'0'||a>'9'){
if(a=='-')y=-1;
a=getchar();
}
while(a>='0'&&a<='9'){
x=x*10+a-'0';
a=getchar();
}
x*=y;
}
inline void readu(unsigned long long &x){
x=0;
int y=1;
char a;
a=getchar();
while(a<'0'||a>'9'){
if(a=='-')y=-1;
a=getchar();
}
while(a>='0'&&a<='9'){
x=x*10+a-'0';
a=getchar();
}
x*=y;
}
int n,m,c,k;
unsigned long long a;
unsigned long long fans;
bool fz[1888];
bool fs[1888];
int main(){
readi(n);readi(m);readi(c);readi(k);
if(n==0&&k==64){
cout<<"18446744073709551616"<<endl;
return 0;
}
for(int i=1;i<=n;++i){
readu(a);
int ffz=0;
while(a>0){
if(a%2!=0)fz[ffz]=true;
a/=2;
++ffz;
}
}
for(int i=1;i<=m;++i){
int a1,b;
readi(a1);readi(b);
fs[a1]=true;
}
int qfz=0;
for(int i=1;i<=k;++i){
if(!fs[i]||(fs[i]&&fz[i]))++qfz;
}
if(qfz==64){
for(int i=1;i<=63;++i){
fans*=2;
}
fans=(fans-1)*2-n+2;
cout<<fans<<endl;
return 0;
}
fans=1;
for(int i=1;i<=qfz;++i){
fans*=2;
}
fans-=n;
cout<<fans<<endl;
return 0;
}
一脸懵…… 考场没特判85,加了特判才90。请大佬们帮忙看看