#include <bits/stdc++.h>
using namespace std;
constexpr int maxn=2e5 + 5;
int pop[maxn],rep[maxn];
long long sum[maxn];
bool added[maxn],bad[maxn];
vector<int> g[maxn];
int Find(int v){
if (rep[v]!=v){
int r=Find(rep[v]);
if (bad[rep[v]]) bad[v]=true;
rep[v]=r;
}
return rep[v];
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n,m;
cin>>n>>m;
for (int i=1;i<=n;i++) cin>>pop[i];
for (int i=0;i<m;i++){
int a,b;
cin>>a>>b;
g[a].push_back(b);
g[b].push_back(a);
}
for (int i=1;i<=n;i++){
rep[i]=i;
sum[i]=pop[i];
}
vector<int> vil(n);
iota(vil.begin(),vil.end(),1);
sort(vil.begin(),vil.end(),[&](int a,int b){
return pop[a]<pop[b];
});
for (int i=0;i<n;i++){
int v=vil[i];
for (int u:g[v]){
if (!added[u]) continue;
int ru=Find(u);
int rv=Find(v);
if (ru==rv) continue;
rep[ru]=rv;
sum[rv]+=sum[ru];
if (sum[ru]<pop[v]) bad[ru]=true;
}
added[v]=true;
}
for (int i=1;i<=n;i++){
Find(i);
if (bad[i]) cout<<0;
else cout<<1;
}
cout<<"\n";
return 0;
}