#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 x, y;
cin >> x >> y;
x--; y--;
g[x].push_back(y);
g[y].push_back(x);
}
vector<vector<int>> dp(n, vector<int>(1 << k));
for (int i = 0; i < n; i++) {
dp[i][1 << a[i]] = 1;
}
for (int s = 0; s < (1 << k); s++) {
for (int i = 0; i < n; i++) {
if (dp[i][s] == 0) continue;
for (auto j : g[i]) {
if (!(s & (1 << a[j]))) {
dp[j][s | (1 << a[j])] += dp[i][s];
}
}
}
}
long long ans = -n;
for (int i = 0; i < n; i++) {
for (int s = 0; s < (1 << k); s++) {
ans += dp[i][s];
}
}
cout << ans << '\n';
return 0;
}