#include <bits/stdc++.h>
#define ll long long
#define el cout << '\n'
#define f(i, a, b) for(long long i = a; i <= b; ++i)
#define fv(i, a, b) for(long long i = a; i >= b; i--)
#define ft first
#define sd second
#define pll pair<long long,long long>
#define vll vector<long long>
#define ep emplace_back
#define pb push_back
using namespace std;
const ll oo = 1e18+123, N = 2e5+5, MOD = 1e9+7;
void Initialization();
ll test, n, m, ans, k, c[N], deg[N], topo[N], dp[N][31];
vector<vll> E;
void solve() {
queue<pll> q;
f(i, 1, n) {
dp[i][1] = c[i]; q.push({i, 0}); q.push({i, 1});
}
while(!q.empty()) {
int u = q.front().ft, i = q.front().sd; q.pop();
for(int v : E[u]) {
if(dp[v][i + 1] < dp[u][i] + c[v]) {
dp[v][i + 1] = dp[u][i] + c[v];
q.push({v, i + 1});
}
if(dp[v][i] < dp[u][i]) {
dp[v][i] = dp[u][i];
q.push({v, i});
}
}
}
f(u, 1, n) f(z, 1, k) ans = max(ans, dp[u][z]);
cout << ans;
}
void topo_sort() {
queue<ll> q;
f(i, 1, n) if(!deg[i]) q.push(i);
vll vis(n + 1, 0);
ll cnt = 0;
while(!q.empty()) {
ll u = q.front(); q.pop();
if(vis[u]) continue; vis[u] = 1;
topo[++cnt] = u;
for(ll v : E[u]) {
deg[v]--;
if(deg[v] == 0) q.push(v);
}
}
}
void sub1() {
sort(c + 1, c + n + 1);
fv(i, n, n - k + 1) ans += c[i];
cout << ans;
}
void sub23() {
topo_sort();
f(i, 1, n) {
ll u = topo[i];
dp[u][1] = max(c[u], dp[u][1]);
for(int v : E[u])
f(z, 1, k)
dp[v][z] = max(
dp[v][z],
max(dp[u][z - 1] + c[v], dp[u][z])
);
}
f(u, 1, n) f(z, 1, k) ans = max(ans, dp[u][z]);
cout << ans;
}
ll low[N], num[N], tp[N], Time, cc;
bool dele[N];
stack<ll> st;
vector<vll> ma(1);
void tarjan (ll u) {
low[u] = num[u] = ++Time;
st.push(u);
for(ll v : E[u]) {
if(dele[v]) continue;
if(num[v]) low[u] = min(low[u], num[v]);
else {
tarjan(v);
low[u] = min(low[u], low[v]);
}
}
if(num[u] == low[u]) {
cc++;
ll v = 0;
vll dmp;
while(v != u) {
v= st.top(); st.pop();
dmp.pb(c[v]);
tp[v] = cc;
dele[v] = 1;
}
sort(dmp.begin(), dmp.end(), greater<ll>());
ma.pb({0});
ll sum = 0;
for(ll x : dmp) {
sum += x; ma[cc].pb(sum);
}
// cout << cc << '.', el;
// for(ll x : dmp) cout << x << ' '; el;
// for(ll x : ma[cc]) cout << x << ' '; el;
}
}
ll degd[N];
vector<vll> Ed, Er;
void sub4() {
f(u, 1, n) if(num[u] == 0) tarjan(u);
Ed.resize(cc + 1);
Er.resize(cc + 1);
f(u, 1, n)
for(ll v : E[u]) if(tp[u] != tp[v]) {
Er[tp[v]].pb(tp[u]);
Ed[tp[u]].pb(tp[v]); degd[tp[v]] ++;
}
queue<ll> q;
f(i, 1, cc) if(!degd[i]) q.push(i);
ll cnt = 0;
// f(i, 1, cc) cout << i << ' '; el;
// f(i, 1, cc) cout << degd[i] << ' '; el;
// f(i, 1, cc) {
// cout << i << ":";
// for(ll v : Er[i]) cout << v << ' '; el;
// }
while(!q.empty()) {
ll u = q.front(); q.pop();
topo[++cnt] = u;
for(ll v : Ed[u]) {
degd[v]--;
if(degd[v] == 0) q.push(v);
}
}
f(o, 1, cc) {
ll u = topo[o];
f(i, 1, ma.size() - 1) dp[u][i] = ma[u][i];
f(z, 1, k) {
for(ll v : Er[u]) {
f(j, 0, min(z, (ll) (ma[u].size() - 1)))
dp[u][z] = max(
dp[u][z],
dp[v][z - j] + ma[u][j]
);
}
}
}
// cout << cc, el;
// f(i, 1, cc) cout << topo[i] << ' '; el;
// f(i, 1, n) cout << i << ' '; el;
// f(i, 1, n) cout << tp[i] << ' '; el;
// f(u, 1, cc) {
// f(z, 1, k) {
// cout << dp[u][z] << ' ';
// } el;
// }
f(u, 1, cc) f(z, 1, k) ans = max(ans, dp[u][z]);
cout << ans;
}
int main()
{
Initialization();
cin >> n >> m >> k;
E.resize(n + 1);
f(i, 1, n) cin >> c[i];
ll u, v;
f(i, 1, m) {
cin >> u >> v;
E[u].pb(v); deg[v] ++;
}
//if(n < 20) sub1();
// solve(); return 0;
sub4();
return 0;
}
void Initialization() {
#define thukem "produce"
if(fopen(thukem".inp", "r")) {
freopen(thukem".inp","r",stdin);
freopen(thukem".out","w",stdout);
}
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgICAgICAgICAgICAgIGxvbmcgbG9uZwojZGVmaW5lIGVsICAgICAgICAgICAgICBjb3V0IDw8ICdcbicKI2RlZmluZSBmKGksIGEsIGIpICAgICAgZm9yKGxvbmcgbG9uZyBpID0gYTsgaSA8PSBiOyArK2kpCiNkZWZpbmUgZnYoaSwgYSwgYikgICAgIGZvcihsb25nIGxvbmcgaSA9IGE7IGkgPj0gYjsgaS0tKQojZGVmaW5lIGZ0ICAgICAgICAgICAgICBmaXJzdAojZGVmaW5lIHNkICAgICAgICAgICAgICBzZWNvbmQKI2RlZmluZSBwbGwgICAgICAgICAgICAgcGFpcjxsb25nIGxvbmcsbG9uZyBsb25nPgojZGVmaW5lIHZsbCAgICAgICAgICAgICB2ZWN0b3I8bG9uZyBsb25nPgojZGVmaW5lIGVwICAgICAgICAgICAgICBlbXBsYWNlX2JhY2sKI2RlZmluZSBwYiAgICAgICAgICAgICAgcHVzaF9iYWNrCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGxsIG9vID0gMWUxOCsxMjMsIE4gPSAyZTUrNSwgTU9EID0gMWU5Kzc7Cgp2b2lkIEluaXRpYWxpemF0aW9uKCk7CgpsbCB0ZXN0LCBuLCBtLCBhbnMsIGssIGNbTl0sIGRlZ1tOXSwgdG9wb1tOXSwgZHBbTl1bMzFdOwp2ZWN0b3I8dmxsPiBFOwoKdm9pZCBzb2x2ZSgpIHsKICAgIHF1ZXVlPHBsbD4gcTsKICAgIGYoaSwgMSwgbikgewogICAgICAgIGRwW2ldWzFdID0gY1tpXTsgcS5wdXNoKHtpLCAwfSk7IHEucHVzaCh7aSwgMX0pOwogICAgfQogICAgd2hpbGUoIXEuZW1wdHkoKSkgewogICAgICAgIGludCB1ID0gcS5mcm9udCgpLmZ0LCBpID0gcS5mcm9udCgpLnNkOyBxLnBvcCgpOwogICAgICAgIGZvcihpbnQgdiA6IEVbdV0pIHsKICAgICAgICAgICAgaWYoZHBbdl1baSArIDFdIDwgZHBbdV1baV0gKyBjW3ZdKSB7CiAgICAgICAgICAgICAgICBkcFt2XVtpICsgMV0gPSBkcFt1XVtpXSArIGNbdl07CiAgICAgICAgICAgICAgICBxLnB1c2goe3YsIGkgKyAxfSk7CiAgICAgICAgICAgIH0gCiAgICAgICAgICAgIGlmKGRwW3ZdW2ldIDwgZHBbdV1baV0pIHsKICAgICAgICAgICAgICAgIGRwW3ZdW2ldID0gZHBbdV1baV07CiAgICAgICAgICAgICAgICBxLnB1c2goe3YsIGl9KTsKICAgICAgICAgICAgfSAKCiAgICAgICAgfSAKICAgIH0KICAgIGYodSwgMSwgbikgZih6LCAxLCBrKSBhbnMgPSBtYXgoYW5zLCBkcFt1XVt6XSk7CiAgICBjb3V0IDw8IGFuczsKfQoKdm9pZCB0b3BvX3NvcnQoKSB7CiAgICBxdWV1ZTxsbD4gcTsKICAgIGYoaSwgMSwgbikgaWYoIWRlZ1tpXSkgcS5wdXNoKGkpOwogICAgCiAgICB2bGwgdmlzKG4gKyAxLCAwKTsKICAgIGxsIGNudCA9IDA7CiAgICB3aGlsZSghcS5lbXB0eSgpKSB7CiAgICAgICAgbGwgdSA9IHEuZnJvbnQoKTsgcS5wb3AoKTsgIAogICAgICAgIGlmKHZpc1t1XSkgY29udGludWU7IHZpc1t1XSA9IDE7CiAgICAgICAgdG9wb1srK2NudF0gPSB1OwogICAgICAgIGZvcihsbCB2IDogRVt1XSkgewogICAgICAgICAgICBkZWdbdl0tLTsKICAgICAgICAgICAgaWYoZGVnW3ZdID09IDApIHEucHVzaCh2KTsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgc3ViMSgpIHsKICAgIHNvcnQoYyArIDEsIGMgKyBuICsgMSk7CiAgICBmdihpLCBuLCBuIC0gayArIDEpIGFucyArPSBjW2ldOwogICAgY291dCA8PCBhbnM7IAp9Cgp2b2lkIHN1YjIzKCkgewogICAgdG9wb19zb3J0KCk7CgogICAgZihpLCAxLCBuKSB7CiAgICAgICAgbGwgdSA9IHRvcG9baV07CiAgICAgICAgZHBbdV1bMV0gPSBtYXgoY1t1XSwgZHBbdV1bMV0pOwogICAgICAgIGZvcihpbnQgdiA6IEVbdV0pIAogICAgICAgICAgICBmKHosIDEsIGspIAogICAgICAgICAgICAgICAgZHBbdl1bel0gPSBtYXgoCiAgICAgICAgICAgICAgICAgICAgZHBbdl1bel0sIAogICAgICAgICAgICAgICAgICAgIG1heChkcFt1XVt6IC0gMV0gKyBjW3ZdLCBkcFt1XVt6XSkKICAgICAgICAgICAgICAgICk7IAogICAgfQogICAgCiAgICBmKHUsIDEsIG4pIGYoeiwgMSwgaykgYW5zID0gbWF4KGFucywgZHBbdV1bel0pOwogICAgY291dCA8PCBhbnM7Cn0KCmxsIGxvd1tOXSwgbnVtW05dLCB0cFtOXSwgVGltZSwgY2M7CmJvb2wgZGVsZVtOXTsKc3RhY2s8bGw+IHN0Owp2ZWN0b3I8dmxsPiBtYSgxKTsKCnZvaWQgdGFyamFuIChsbCB1KSB7CiAgICBsb3dbdV0gPSBudW1bdV0gPSArK1RpbWU7CiAgICBzdC5wdXNoKHUpOwoKICAgIGZvcihsbCB2IDogRVt1XSkgewogICAgICAgIGlmKGRlbGVbdl0pIGNvbnRpbnVlOwogICAgICAgIGlmKG51bVt2XSkgbG93W3VdID0gbWluKGxvd1t1XSwgbnVtW3ZdKTsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdGFyamFuKHYpOwogICAgICAgICAgICBsb3dbdV0gPSBtaW4obG93W3VdLCBsb3dbdl0pOwogICAgICAgIH0KICAgIH0KCiAgICBpZihudW1bdV0gPT0gbG93W3VdKSB7CiAgICAgICAgY2MrKzsKICAgICAgICBsbCB2ID0gMDsKICAgICAgICB2bGwgZG1wOwogICAgICAgIAogICAgICAgIHdoaWxlKHYgIT0gdSkgewogICAgICAgICAgICB2PSBzdC50b3AoKTsgc3QucG9wKCk7CiAgICAgICAgICAgIGRtcC5wYihjW3ZdKTsKICAgICAgICAgICAgdHBbdl0gPSBjYzsKICAgICAgICAgICAgZGVsZVt2XSA9IDE7CiAgICAgICAgfQogICAgICAgIHNvcnQoZG1wLmJlZ2luKCksIGRtcC5lbmQoKSwgZ3JlYXRlcjxsbD4oKSk7CiAgICAgICAgbWEucGIoezB9KTsKICAgICAgICBsbCBzdW0gPSAwOwogICAgICAgIGZvcihsbCB4IDogZG1wKSB7CiAgICAgICAgICAgIHN1bSArPSB4OyBtYVtjY10ucGIoc3VtKTsKICAgICAgICB9CiAgICAgICAgLy8gY291dCA8PCBjYyA8PCAnLicsIGVsOwogICAgICAgIC8vIGZvcihsbCB4IDogZG1wKSBjb3V0IDw8IHggPDwgJyAnOyBlbDsKICAgICAgICAvLyBmb3IobGwgeCA6IG1hW2NjXSkgY291dCA8PCB4IDw8ICcgJzsgZWw7CiAgICB9Cn0KCmxsIGRlZ2RbTl07CnZlY3Rvcjx2bGw+IEVkLCBFcjsKCnZvaWQgc3ViNCgpIHsKICAgIGYodSwgMSwgbikgaWYobnVtW3VdID09IDApIHRhcmphbih1KTsKICAgIEVkLnJlc2l6ZShjYyArIDEpOwogICAgRXIucmVzaXplKGNjICsgMSk7CiAgICBmKHUsIDEsIG4pIAogICAgICAgIGZvcihsbCB2IDogRVt1XSkgaWYodHBbdV0gIT0gdHBbdl0pIHsKICAgICAgICAgICAgRXJbdHBbdl1dLnBiKHRwW3VdKTsKICAgICAgICAgICAgRWRbdHBbdV1dLnBiKHRwW3ZdKTsgZGVnZFt0cFt2XV0gKys7CiAgICAgICAgfQogICAgICAgICAgICAKICAgIHF1ZXVlPGxsPiBxOwogICAgZihpLCAxLCBjYykgaWYoIWRlZ2RbaV0pIHEucHVzaChpKTsKICAgIAogICAgbGwgY250ID0gMDsKICAgIC8vIGYoaSwgMSwgY2MpIGNvdXQgPDwgaSA8PCAnICc7IGVsOwogICAgLy8gZihpLCAxLCBjYykgY291dCA8PCBkZWdkW2ldIDw8ICcgJzsgZWw7CiAgICAvLyBmKGksIDEsIGNjKSB7CiAgICAvLyAgICAgY291dCA8PCBpIDw8ICI6IjsKICAgIC8vICAgICBmb3IobGwgdiA6IEVyW2ldKSBjb3V0IDw8IHYgPDwgJyAnOyBlbDsKICAgIC8vIH0KICAgIHdoaWxlKCFxLmVtcHR5KCkpIHsKICAgICAgICBsbCB1ID0gcS5mcm9udCgpOyBxLnBvcCgpOyAgCiAgICAgICAgCiAgICAgICAgdG9wb1srK2NudF0gPSB1OwogICAgICAgIGZvcihsbCB2IDogRWRbdV0pIHsKICAgICAgICAgICAgZGVnZFt2XS0tOwogICAgICAgICAgICBpZihkZWdkW3ZdID09IDApIHEucHVzaCh2KTsKICAgICAgICB9CiAgICB9CgogICAgCiAgICBmKG8sIDEsIGNjKSB7CiAgICAgICAgbGwgdSA9IHRvcG9bb107CiAgICAgICAgZihpLCAxLCBtYS5zaXplKCkgLSAxKSBkcFt1XVtpXSA9IG1hW3VdW2ldOwoKICAgICAgICBmKHosIDEsIGspIHsKICAgICAgICAgICAgZm9yKGxsIHYgOiBFclt1XSkgewogICAgICAgICAgICAgICAgZihqLCAwLCBtaW4oeiwgKGxsKSAobWFbdV0uc2l6ZSgpIC0gMSkpKSAKICAgICAgICAgICAgICAgICAgICBkcFt1XVt6XSA9IG1heCgKICAgICAgICAgICAgICAgICAgICAgICAgZHBbdV1bel0sIAogICAgICAgICAgICAgICAgICAgICAgICBkcFt2XVt6IC0gal0gKyBtYVt1XVtqXQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8gY291dCA8PCBjYywgZWw7CgogICAgLy8gZihpLCAxLCBjYykgY291dCA8PCB0b3BvW2ldIDw8ICcgJzsgZWw7CgoKICAgIC8vIGYoaSwgMSwgbikgY291dCA8PCBpIDw8ICcgJzsgZWw7CiAgICAvLyBmKGksIDEsIG4pIGNvdXQgPDwgdHBbaV0gPDwgJyAnOyBlbDsKCiAgICAvLyBmKHUsIDEsIGNjKSB7CiAgICAvLyAgICAgZih6LCAxLCBrKSB7CiAgICAvLyAgICAgICAgIGNvdXQgPDwgZHBbdV1bel0gPDwgJyAnOwogICAgLy8gICAgIH0gZWw7CiAgICAvLyB9CgogICAgZih1LCAxLCBjYykgZih6LCAxLCBrKSBhbnMgPSBtYXgoYW5zLCBkcFt1XVt6XSk7CiAgICBjb3V0IDw8IGFuczsKCn0KCmludCBtYWluKCkKewogICAgSW5pdGlhbGl6YXRpb24oKTsKICAgIAogICAgY2luID4+IG4gPj4gbSA+PiBrOwogICAgRS5yZXNpemUobiArIDEpOwogICAgZihpLCAxLCBuKSBjaW4gPj4gY1tpXTsKCiAgICBsbCB1LCB2OwogICAgZihpLCAxLCBtKSB7CiAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICBFW3VdLnBiKHYpOyBkZWdbdl0gKys7CiAgICB9CgogICAgLy9pZihuIDwgMjApIHN1YjEoKTsKICAgIC8vIHNvbHZlKCk7IHJldHVybiAwOwogICAgc3ViNCgpOwoKICAgIAoKICAgIHJldHVybiAwOwp9Cgp2b2lkIEluaXRpYWxpemF0aW9uKCkgewogICAgI2RlZmluZSB0aHVrZW0gInByb2R1Y2UiCiAgICBpZihmb3Blbih0aHVrZW0iLmlucCIsICJyIikpIHsKICAgICAgICBmcmVvcGVuKHRodWtlbSIuaW5wIiwiciIsc3RkaW4pOwogICAgICAgIGZyZW9wZW4odGh1a2VtIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgfQogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKfQ==