#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 2e5 + 5;
int bad[maxn], sum[maxn], c[maxn], p[maxn];
int find(int u){
if(p[u] == u) return u;
bad[u] |= bad[p[u]];
return p[u] = find(p[u]);
}
void merge(int u, int v){
u = find(u), v = find(v);
if(u == v) return;
if(c[u] < c[v]) swap(u, v);
if(c[u] > sum[v]) bad[v] = 1;
sum[u] += sum[v];
p[v] = u;
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n, m; cin >> n >> m;
for(int i = 1; i <= n; i++){
cin >> c[i];
sum[i] = c[i];
p[i] = i;
}
vector<array<int, 3>> edge;
while(m--){
int u, v; cin >> u >> v;
edge.push_back({max(c[u], c[v]), u, v});
}
sort(edge.begin(), edge.end());
for(auto [w, u, v]: edge) merge(u, v);
for(int i = 1; i <= n; i++){
find(i);
cout << !bad[i];
}
}