#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=3e5+10;
int c[N],k;
vector<int> f[N],l[N];
vector<pair<int,int>> li[10][10];
ll ans=0,dp[N];
void rec(vector<int> &vt,int ck){
int sz=vt.size();
if(!vt.empty()){
ll cal=0;
if(vt.size()==1) for(auto u:f[vt.back()]) dp[u]=1;
else for(auto u:f[vt.back()]) dp[u]=0;
if(vt.size()>1){
int pre=*(vt.end()-2);
for(auto [u,v]:li[pre][vt.back()]) dp[v]+=dp[u];
}
if(vt.size()!=1) for(auto u:f[vt.back()]) cal+=dp[u];
ans+=cal;
}
for(int i=0;i<k;i++){
if(ck&(1<<i)) continue;
vt.push_back(i);
rec(vt,ck|(1<<i));
vt.pop_back();
}
}
int main(){
int n,m; cin>>n >>m >>k;
for(int i=1;i<=n;i++){
cin>>c[i];
c[i]--;
f[c[i]].push_back(i);
}
for(int i=0;i<m;i++){
int u,v; cin>>u >>v;
li[c[u]][c[v]].push_back({u,v});
li[c[v]][c[u]].push_back({v,u});
}
vector<int> v;
rec(v,0);
cout<<ans;
}