#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int nx = 2e5 + 5;
ll sz[nx];
int n, m;
vector<int> adj[nx];
set<int> s[nx];
int pa[nx];
vector<pair<int,int>> qrs;
bool vis[nx];
int fp(int n) {
if (pa[n] == n) return n;
return pa[n] = fp(pa[n]);
}
int main() {
ios_base::sync_with_stdio(0), cin.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; i++) cin >> sz[i], pa[i] = i, s[i].insert(i), qrs.emplace_back(sz[i], i);
sort(qrs.begin(), qrs.end());
while (m--) {
int u, v;
cin >> u >> v;
adj[u].emplace_back(v);
adj[v].emplace_back(u);
}
for (auto [x, u] : qrs) {
vis[u] = 1;
for (auto v : adj[u]) {
if (!vis[v] || fp(u) == fp(v)) continue;
int pu = fp(u), pv = fp(v);
if (sz[pv] < sz[pu]) {
sz[pv] = 0;
s[pv].clear();
continue;
}
if (s[pv].size() > s[pu].size()) swap(s[pu],s[pv]);
for (auto xx : s[pv]) s[pu].insert(xx);
sz[pu] += sz[pv];
sz[pv] = 0;
s[pv].clear();
pa[pv] = pu;
}
}
vector<int> ans(n);
for (auto x : s[qrs.back().second]) {
ans[x-1] = 1;
}
for (auto x : ans) cout << x;
}