#include <bits/stdc++.h>
using namespace std;
#define INF 1e9
int main() {
int n, m;
cin >> n >> m;
vector<int> a(n + 1);
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
vector<vector<int>> adj(n + 1);
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
int k;
cin >> k;
// Add super-source 0
vector<vector<int>> G(n + 1);
for (int i = 1; i <= n; i++) {
G[i] = adj[i];
if (a[i] == 0) {
G[0].push_back(i);
G[i].push_back(0);
}
}
// BFS from super-source
queue<int> q;
vector<int> dist(n + 1, INF);
q.push(0);
dist[0] = 0;
while (!q.empty()) {
int u = q.front();
q.pop();
for (int v : G[u]) {
if (dist[v] == INF && dist[u] + 1 <= k + 1) {
dist[v] = dist[u] + 1;
q.push(v);
}
}
}
// Infect nodes within distance k of a virus
for (int i = 1; i <= n; i++) {
if (dist[i] <= k + 1) {
a[i] = 0;
}
}
// BFS from 1 to n
queue<int> q2;
vector<int> d(n + 1, INF);
if (a[1] == 1) {
q2.push(1);
d[1] = 0;
}
while (!q2.empty()) {
int u = q2.front();
q2.pop();
for (int v : adj[u]) {
if (a[v] == 1 && d[v] == INF) {
d[v] = d[u] + 1;
q2.push(v);
}
}
}
cout << (d[n] == INF ? -1 : d[n]) << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIElORiAxZTkKCmludCBtYWluKCkgewogICAgaW50IG4sIG07CiAgICBjaW4gPj4gbiA+PiBtOwoKICAgIHZlY3RvcjxpbnQ+IGEobiArIDEpOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgfQoKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gYWRqKG4gKyAxKTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG07IGkrKykgewogICAgICAgIGludCB1LCB2OwogICAgICAgIGNpbiA+PiB1ID4+IHY7CgogICAgICAgIGFkalt1XS5wdXNoX2JhY2sodik7CiAgICAgICAgYWRqW3ZdLnB1c2hfYmFjayh1KTsKICAgIH0KCiAgICBpbnQgazsKICAgIGNpbiA+PiBrOwoKICAgIC8vIEFkZCBzdXBlci1zb3VyY2UgMAogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBHKG4gKyAxKTsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBHW2ldID0gYWRqW2ldOwoKICAgICAgICBpZiAoYVtpXSA9PSAwKSB7CiAgICAgICAgICAgIEdbMF0ucHVzaF9iYWNrKGkpOwogICAgICAgICAgICBHW2ldLnB1c2hfYmFjaygwKTsKICAgICAgICB9CiAgICB9CgogICAgLy8gQkZTIGZyb20gc3VwZXItc291cmNlCiAgICBxdWV1ZTxpbnQ+IHE7CiAgICB2ZWN0b3I8aW50PiBkaXN0KG4gKyAxLCBJTkYpOwoKICAgIHEucHVzaCgwKTsKICAgIGRpc3RbMF0gPSAwOwoKICAgIHdoaWxlICghcS5lbXB0eSgpKSB7CiAgICAgICAgaW50IHUgPSBxLmZyb250KCk7CiAgICAgICAgcS5wb3AoKTsKCiAgICAgICAgZm9yIChpbnQgdiA6IEdbdV0pIHsKICAgICAgICAgICAgaWYgKGRpc3Rbdl0gPT0gSU5GICYmIGRpc3RbdV0gKyAxIDw9IGsgKyAxKSB7CiAgICAgICAgICAgICAgICBkaXN0W3ZdID0gZGlzdFt1XSArIDE7CiAgICAgICAgICAgICAgICBxLnB1c2godik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8gSW5mZWN0IG5vZGVzIHdpdGhpbiBkaXN0YW5jZSBrIG9mIGEgdmlydXMKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGlmIChkaXN0W2ldIDw9IGsgKyAxKSB7CiAgICAgICAgICAgIGFbaV0gPSAwOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBCRlMgZnJvbSAxIHRvIG4KICAgIHF1ZXVlPGludD4gcTI7CiAgICB2ZWN0b3I8aW50PiBkKG4gKyAxLCBJTkYpOwoKICAgIGlmIChhWzFdID09IDEpIHsKICAgICAgICBxMi5wdXNoKDEpOwogICAgICAgIGRbMV0gPSAwOwogICAgfQoKICAgIHdoaWxlICghcTIuZW1wdHkoKSkgewogICAgICAgIGludCB1ID0gcTIuZnJvbnQoKTsKICAgICAgICBxMi5wb3AoKTsKCiAgICAgICAgZm9yIChpbnQgdiA6IGFkalt1XSkgewogICAgICAgICAgICBpZiAoYVt2XSA9PSAxICYmIGRbdl0gPT0gSU5GKSB7CiAgICAgICAgICAgICAgICBkW3ZdID0gZFt1XSArIDE7CiAgICAgICAgICAgICAgICBxMi5wdXNoKHYpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgKGRbbl0gPT0gSU5GID8gLTEgOiBkW25dKSA8PCAnXG4nOwp9