#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m, k;
cin >> n >> m >> k;
vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
a[i]--;
}
vector<vector<int>> g(n);
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
u--; v--;
g[u].push_back(v);
g[v].push_back(u);
}
int64_t ans = -n;
vector<bool> vis(k);
auto dfs = [&](auto&& self, int u, int len = 0) -> void {
if (len == k + 1) {
return;
}
ans++;
for (auto v : g[u]) {
if (!vis[a[v]]) {
vis[a[v]] = true;
self(self, v, len + 1);
vis[a[v]] = false;
}
}
};
for (int i = 0; i < n; i++) {
vis.assign(k, false);
vis[a[i]] = 1;
dfs(dfs, i);
}
cout << ans << '\n';
return 0;
}