#include <iostream>
#include <cstdio>
#include <vector>
#include <stack>
using namespace std;
typedef long long ll;
#define SZ(a) (int)(a).size()
const int nil = -1;
const int oo = 0x3f3f3f3f;
vector<vector<int>> al;
vector<int> low;
stack<int> t;
vector<vector<int>> sccs;
void genSCC(int u) {
auto d = SZ(t);
low[u] = d;
t.push(u);
for (auto v: al[u]) {
if (low[v] == nil) genSCC(v);
low[u] = min(low[u], low[v]);
}
if (low[u] == d) {
vector<int> scc;
int top;
do {
top = t.top();
t.pop();
low[top] = oo;
scc.push_back(top);
} while (top != u);
sccs.push_back(scc);
}
}
int main() {
cin.sync_with_stdio(false);
int n, m;
cin >> n >> m;
vector<int> cs(n);
for (int i = 0; i < n; i++) {
cin >> cs[i];
}
al.assign(n, {});
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
u--, v--;
al[u].push_back(v);
}
low.assign(n, nil);
for (int u = 0; u < n; u++) {
if (low[u] == nil) genSCC(u);
}
int nscc = SZ(sccs);
vector<int> isccs(n);
for (int i = 0; i < nscc; i++) {
for (auto u: sccs[i]) {
isccs[u] = i;
}
}
vector<vector<int>> aldag(SZ(sccs));
for (int i = 0; i < nscc; i++) {
for (auto u: sccs[i]) {
for (auto v: al[u]) {
aldag[i].push_back(isccs[v]);
}
}
}
vector<ll> ans(nscc, 0);
for (int i = 0; i < nscc; i++) {
for (auto j: aldag[i]) {
ans[i] = max(ans[i], ans[j]);
}
for (auto u: sccs[i]) {
ans[i] += cs[u];
}
}
for (int u = 0; u < n; u++) {
printf("%lld%c", ans[isccs[u]], " \n"[u == n-1]);
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RhY2s+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwojZGVmaW5lIFNaKGEpIChpbnQpKGEpLnNpemUoKQogCmNvbnN0IGludCBuaWwgPSAtMTsKY29uc3QgaW50IG9vID0gMHgzZjNmM2YzZjsKIAp2ZWN0b3I8dmVjdG9yPGludD4+IGFsOwp2ZWN0b3I8aW50PiBsb3c7CnN0YWNrPGludD4gdDsKdmVjdG9yPHZlY3RvcjxpbnQ+PiBzY2NzOwogCnZvaWQgZ2VuU0NDKGludCB1KSB7CglhdXRvIGQgPSBTWih0KTsKCWxvd1t1XSA9IGQ7Cgl0LnB1c2godSk7Cglmb3IgKGF1dG8gdjogYWxbdV0pIHsKCQlpZiAobG93W3ZdID09IG5pbCkgZ2VuU0NDKHYpOwoJCWxvd1t1XSA9IG1pbihsb3dbdV0sIGxvd1t2XSk7Cgl9CglpZiAobG93W3VdID09IGQpIHsKCQl2ZWN0b3I8aW50PiBzY2M7CgkJaW50IHRvcDsKCQlkbyB7CgkJCXRvcCA9IHQudG9wKCk7CgkJCXQucG9wKCk7CgkJCWxvd1t0b3BdID0gb287CgkJCXNjYy5wdXNoX2JhY2sodG9wKTsKCQl9IHdoaWxlICh0b3AgIT0gdSk7CgkJc2Njcy5wdXNoX2JhY2soc2NjKTsKCX0KfQogCmludCBtYWluKCkgewoJY2luLnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CglpbnQgbiwgbTsKCWNpbiA+PiBuID4+IG07Cgl2ZWN0b3I8aW50PiBjcyhuKTsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJY2luID4+IGNzW2ldOwoJfQoJYWwuYXNzaWduKG4sIHt9KTsKCWZvciAoaW50IGkgPSAwOyBpIDwgbTsgaSsrKSB7CgkJaW50IHUsIHY7CgkJY2luID4+IHUgPj4gdjsKCQl1LS0sIHYtLTsKCQlhbFt1XS5wdXNoX2JhY2sodik7Cgl9Cglsb3cuYXNzaWduKG4sIG5pbCk7Cglmb3IgKGludCB1ID0gMDsgdSA8IG47IHUrKykgewoJCWlmIChsb3dbdV0gPT0gbmlsKSBnZW5TQ0ModSk7Cgl9CglpbnQgbnNjYyA9IFNaKHNjY3MpOwoJdmVjdG9yPGludD4gaXNjY3Mobik7Cglmb3IgKGludCBpID0gMDsgaSA8IG5zY2M7IGkrKykgewoJCWZvciAoYXV0byB1OiBzY2NzW2ldKSB7CgkJCWlzY2NzW3VdID0gaTsKCQl9Cgl9Cgl2ZWN0b3I8dmVjdG9yPGludD4+IGFsZGFnKFNaKHNjY3MpKTsKCWZvciAoaW50IGkgPSAwOyBpIDwgbnNjYzsgaSsrKSB7CgkJZm9yIChhdXRvIHU6IHNjY3NbaV0pIHsKCQkJZm9yIChhdXRvIHY6IGFsW3VdKSB7CgkJCQlhbGRhZ1tpXS5wdXNoX2JhY2soaXNjY3Nbdl0pOwoJCQl9CgkJfQoJfQoJdmVjdG9yPGxsPiBhbnMobnNjYywgMCk7Cglmb3IgKGludCBpID0gMDsgaSA8IG5zY2M7IGkrKykgewoJCWZvciAoYXV0byBqOiBhbGRhZ1tpXSkgewoJCQlhbnNbaV0gPSBtYXgoYW5zW2ldLCBhbnNbal0pOwoJCX0KCQlmb3IgKGF1dG8gdTogc2Njc1tpXSkgewoJCQlhbnNbaV0gKz0gY3NbdV07CgkJfQoJfQoJZm9yIChpbnQgdSA9IDA7IHUgPCBuOyB1KyspIHsKCQlwcmludGYoIiVsbGQlYyIsIGFuc1tpc2Njc1t1XV0sICIgXG4iW3UgPT0gbi0xXSk7Cgl9Cn0KIA==