#include <bits/stdc++.h>
using namespace std;
#define int long long
#define BIT(mask, i) (mask & (1 << (i)))
#define ONBIT(mask, i) (mask | (1 << (i)))
const int MAXN = 215;
const int MOD = 1e9 + 7;
int N, M, S;
vector<int> g[MAXN];
int A[MAXN], dem[MAXN], tmp[MAXN][MAXN], check[MAXN][MAXN], cnt[MAXN][MAXN];
int dp[(1 << 10) + 15][215][215];
int solve(int mask, int i, int j) {
if (__builtin_popcount(mask) == M) return 1;
if (dp[mask][i][j] != -1) return dp[mask][i][j];
int cur = 0;
if (A[i] == A[j]) {
if (BIT(mask, A[i] - 1)) {
for (int bit = 0; bit < M; bit++) {
if (BIT(mask, bit)) continue;
for (auto v : g[bit + 1]) {
cur += solve(mask, v, v);
cur %= MOD;
}
}
}
else {
for (int bit = 0; bit < M; bit++) {
if (BIT(mask, bit) || bit == A[i] - 1) continue;
for (auto v : g[bit + 1]) {
if (check[j][v]) {
cur += solve(ONBIT(mask, bit), i, v);
cur %= MOD;
}
}
}
}
}
if (A[i] != A[j]) {
for (int bit = 0; bit < M; bit++) {
if (BIT(mask, bit) || bit == A[i] - 1) continue;
for (auto v : g[bit + 1]) {
if (check[j][v]) {
cur += solve(ONBIT(mask, bit), i, v);
cur %= MOD;
}
}
}
cur += solve(ONBIT(mask, A[i] - 1), i, i);
}
return dp[mask][i][j] = cur;
}
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
// freopen("d5companyt.inp", "r", stdin);
// freopen("d5companyt.out", "w", stdout);
cin >> N >> M >> S;
for (int i = 1; i <= N; i++) {
cin >> A[i];
dem[A[i]]++;
g[A[i]].push_back(i);
}
for (int i = 1; i <= S; i++) {
int a, b;
cin >> a >> b;
tmp[a][b] = true;
cnt[A[a]][b]++;
}
for (int i = 1; i <= M; i++) {
for (int j = 1; j <= M; j++) {
if (i == j) continue;
for (auto a : g[i]) {
for (auto b : g[j]) {
if (cnt[j][a] - tmp[b][a] > (dem[j] - 1) / 2) continue;
if (cnt[i][b] - tmp[a][b] > (dem[i] - 1) / 2) continue;
check[a][b] = true;
}
}
}
}
memset(dp, -1, sizeof dp);
int ans = 0;
for (auto v : g[A[1]]) {
ans += solve(0, v, v);
ans %= MOD;
}
cout << ans;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIEJJVChtYXNrLCBpKSAobWFzayAmICgxIDw8IChpKSkpCiNkZWZpbmUgT05CSVQobWFzaywgaSkgKG1hc2sgfCAoMSA8PCAoaSkpKQoKY29uc3QgaW50IE1BWE4gPSAyMTU7CmNvbnN0IGludCBNT0QgID0gMWU5ICsgNzsKCmludCBOLCBNLCBTOwp2ZWN0b3I8aW50PiBnW01BWE5dOwppbnQgQVtNQVhOXSwgZGVtW01BWE5dLCB0bXBbTUFYTl1bTUFYTl0sIGNoZWNrW01BWE5dW01BWE5dLCBjbnRbTUFYTl1bTUFYTl07CmludCBkcFsoMSA8PCAxMCkgKyAxNV1bMjE1XVsyMTVdOwoKaW50IHNvbHZlKGludCBtYXNrLCBpbnQgaSwgaW50IGopIHsKICAgIGlmIChfX2J1aWx0aW5fcG9wY291bnQobWFzaykgPT0gTSkgcmV0dXJuIDE7CiAgICBpZiAoZHBbbWFza11baV1bal0gIT0gLTEpIHJldHVybiBkcFttYXNrXVtpXVtqXTsKCiAgICBpbnQgY3VyID0gMDsKCiAgICBpZiAoQVtpXSA9PSBBW2pdKSB7CiAgICAgICAgaWYgKEJJVChtYXNrLCBBW2ldIC0gMSkpIHsKICAgICAgICAgICAgZm9yIChpbnQgYml0ID0gMDsgYml0IDwgTTsgYml0KyspIHsKICAgICAgICAgICAgICAgIGlmIChCSVQobWFzaywgYml0KSkgY29udGludWU7CiAgICAgICAgICAgICAgICBmb3IgKGF1dG8gdiA6IGdbYml0ICsgMV0pIHsKICAgICAgICAgICAgICAgICAgICBjdXIgKz0gc29sdmUobWFzaywgdiwgdik7CiAgICAgICAgICAgICAgICAgICAgY3VyICU9IE1PRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZm9yIChpbnQgYml0ID0gMDsgYml0IDwgTTsgYml0KyspIHsKICAgICAgICAgICAgICAgIGlmIChCSVQobWFzaywgYml0KSB8fCBiaXQgPT0gQVtpXSAtIDEpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgZm9yIChhdXRvIHYgOiBnW2JpdCArIDFdKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrW2pdW3ZdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGN1ciArPSBzb2x2ZShPTkJJVChtYXNrLCBiaXQpLCBpLCB2KTsKICAgICAgICAgICAgICAgICAgICAgICAgY3VyICU9IE1PRDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZiAoQVtpXSAhPSBBW2pdKSB7CiAgICAgICAgZm9yIChpbnQgYml0ID0gMDsgYml0IDwgTTsgYml0KyspIHsKICAgICAgICAgICAgaWYgKEJJVChtYXNrLCBiaXQpIHx8IGJpdCA9PSBBW2ldIC0gMSkgY29udGludWU7CiAgICAgICAgICAgIGZvciAoYXV0byB2IDogZ1tiaXQgKyAxXSkgewogICAgICAgICAgICAgICAgaWYgKGNoZWNrW2pdW3ZdKSB7CiAgICAgICAgICAgICAgICAgICAgY3VyICs9IHNvbHZlKE9OQklUKG1hc2ssIGJpdCksIGksIHYpOwogICAgICAgICAgICAgICAgICAgIGN1ciAlPSBNT0Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY3VyICs9IHNvbHZlKE9OQklUKG1hc2ssIEFbaV0gLSAxKSwgaSwgaSk7CiAgICB9CgoKICAgIHJldHVybiBkcFttYXNrXVtpXVtqXSA9IGN1cjsKfQoKCnNpZ25lZCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAgICBjb3V0LnRpZSgwKTsKCi8vICAgIGZyZW9wZW4oImQ1Y29tcGFueXQuaW5wIiwgInIiLCBzdGRpbik7Ci8vICAgIGZyZW9wZW4oImQ1Y29tcGFueXQub3V0IiwgInciLCBzdGRvdXQpOwoKICAgIGNpbiA+PiBOID4+IE0gPj4gUzsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IE47IGkrKykgewogICAgICAgIGNpbiA+PiBBW2ldOwogICAgICAgIGRlbVtBW2ldXSsrOwogICAgICAgIGdbQVtpXV0ucHVzaF9iYWNrKGkpOwogICAgfQoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IFM7IGkrKykgewogICAgICAgIGludCBhLCBiOwogICAgICAgIGNpbiA+PiBhID4+IGI7CiAgICAgICAgdG1wW2FdW2JdID0gdHJ1ZTsKICAgICAgICBjbnRbQVthXV1bYl0rKzsKICAgIH0KCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBNOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBNOyBqKyspIHsKICAgICAgICAgICAgaWYgKGkgPT0gaikgY29udGludWU7CiAgICAgICAgICAgIGZvciAoYXV0byBhIDogZ1tpXSkgewogICAgICAgICAgICAgICAgZm9yIChhdXRvIGIgOiBnW2pdKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNudFtqXVthXSAtIHRtcFtiXVthXSA+IChkZW1bal0gLSAxKSAvIDIpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIGlmIChjbnRbaV1bYl0gLSB0bXBbYV1bYl0gPiAoZGVtW2ldIC0gMSkgLyAyKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICBjaGVja1thXVtiXSA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgoKICAgIG1lbXNldChkcCwgLTEsIHNpemVvZiBkcCk7CgogICAgaW50IGFucyA9IDA7CgogICAgZm9yIChhdXRvIHYgOiBnW0FbMV1dKSB7CiAgICAgICAgYW5zICs9IHNvbHZlKDAsIHYsIHYpOwogICAgICAgIGFucyAlPSBNT0Q7CiAgICB9CgogICAgY291dCA8PCBhbnM7Cn0K