#include <bits/stdc++.h>
#define TSun(TZ) freopen(TZ".inp", "r", stdin), freopen(TZ".out", "w", stdout);
#define TaZinh "color"
using namespace std;
#define ll long long
#define PB push_back
#define ALL(a) a.begin(), a.end()
#define REP(i, n) for(int i = 0; i < n; ++ i)
#define FOR(i, a, b) for(int i = a; i <= b; ++ i)
#define FOD(i, a, b) for(int i = a; i >= b; -- i)
template<class X, class Y>
bool maximize(X &x, const Y & y){
if(x < y){
x = y;
return true;
}
else return false;
}
template<class X, class Y>
bool minimize(X &x, const Y & y){
if(x > y){
x = y;
return true;
}
else return false;
}
const int N = 1e5 + 5;
const int MOD = 1e9 + 7;
int n, m, c[N], ans, res;
vector <int> g[N];
bool del[N];
namespace sub1{
void dfs(int u){
del[u] = true; ++ ans;
for(int v : g[u]) if(!del[v] && c[v] == c[u])
dfs(v);
}
void solve(void){
FOR(i, 1, n){
int tmp = c[i];
FOR(j, 1, n){
c[i] = j;
FOR(k, 1, n)
del[k] = false;
ans = 0;
dfs(i);
maximize(res, ans);
}
c[i] = tmp;
}
cout << res << "\n";
res = 0;
}
}
namespace sub2{
int kth[N], f[N], Ma[N], Rank;
void dfs(int u){
++ f[Rank];
kth[u] = Rank;
del[u] = true;
for(int v : g[u]) if(!del[v] && c[v] == c[u])
dfs(v);
}
void solve(void){
FOR(i, 1, n){
del[i] = false;
f[i] = false;
kth[i] = 0;
}
Rank = 0;
FOR(i, 1, n) if(!del[i]){
++ Rank;
dfs(i);
maximize(res, f[Rank]);
}
FOR(u, 1, n){
for(int v : g[u]) if(kth[u] != kth[v]){
Ma[c[v]] = 0;
del[kth[v]] = 0;
}
for(int v : g[u]) if(kth[u] != kth[v] && !del[kth[v]]){
Ma[c[v]] += f[kth[v]];
del[kth[v]] = true;
maximize(res, Ma[c[v]] + 1);
}
}
cout << res << "\n";
res = 0;
}
}
int main(void){
if(fopen(TaZinh".inp", "r"))
TSun(TaZinh);
int Sun; cin >> Sun;
REP(love, Sun){
cin >> n >> m;
FOR(i, 1, n){
cin >> c[i];
g[i].clear();
}
FOR(i, 1, m){
int u, v; cin >> u >> v;
if(u == v) continue;
g[u].PB(v); g[v].PB(u);
}
if(n <= 100){
sub1 :: solve();
continue;
}
sub2 :: solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgVFN1bihUWikgZnJlb3BlbihUWiIuaW5wIiwgInIiLCBzdGRpbiksIGZyZW9wZW4oVFoiLm91dCIsICJ3Iiwgc3Rkb3V0KTsKI2RlZmluZSBUYVppbmggImNvbG9yIgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBQQiBwdXNoX2JhY2sKI2RlZmluZSBBTEwoYSkgYS5iZWdpbigpLCBhLmVuZCgpCiNkZWZpbmUgUkVQKGksIG4pIGZvcihpbnQgaSA9IDA7IGkgPCBuOyArKyBpKQojZGVmaW5lIEZPUihpLCBhLCBiKSBmb3IoaW50IGkgPSBhOyBpIDw9IGI7ICsrIGkpCiNkZWZpbmUgRk9EKGksIGEsIGIpIGZvcihpbnQgaSA9IGE7IGkgPj0gYjsgLS0gaSkKCnRlbXBsYXRlPGNsYXNzIFgsIGNsYXNzIFk+CiAgICAgICAgYm9vbCBtYXhpbWl6ZShYICZ4LCBjb25zdCBZICYgeSl7CiAgICAgICAgICAgICAgICBpZih4IDwgeSl7CiAgICAgICAgICAgICAgICAgICAgICAgIHggPSB5OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCnRlbXBsYXRlPGNsYXNzIFgsIGNsYXNzIFk+CiAgICAgICAgYm9vbCBtaW5pbWl6ZShYICZ4LCBjb25zdCBZICYgeSl7CiAgICAgICAgICAgICAgICBpZih4ID4geSl7CiAgICAgICAgICAgICAgICAgICAgICAgIHggPSB5OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCmNvbnN0IGludCBOID0gMWU1ICsgNTsKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7CgppbnQgbiwgbSwgY1tOXSwgYW5zLCByZXM7CnZlY3RvciA8aW50PiBnW05dOwpib29sIGRlbFtOXTsKCm5hbWVzcGFjZSBzdWIxewoKICAgICAgICB2b2lkIGRmcyhpbnQgdSl7CiAgICAgICAgICAgICAgICBkZWxbdV0gPSB0cnVlOyArKyBhbnM7CiAgICAgICAgICAgICAgICBmb3IoaW50IHYgOiBnW3VdKSBpZighZGVsW3ZdICYmIGNbdl0gPT0gY1t1XSkKICAgICAgICAgICAgICAgICAgICAgICAgZGZzKHYpOwogICAgICAgIH0KCiAgICAgICAgdm9pZCBzb2x2ZSh2b2lkKXsKICAgICAgICAgICAgICAgIEZPUihpLCAxLCBuKXsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRtcCA9IGNbaV07CiAgICAgICAgICAgICAgICAgICAgICAgIEZPUihqLCAxLCBuKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2ldID0gajsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGT1IoaywgMSwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbFtrXSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFucyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGZzKGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltaXplKHJlcywgYW5zKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBjW2ldID0gdG1wOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY291dCA8PCByZXMgPDwgIlxuIjsKICAgICAgICAgICAgICAgIHJlcyA9IDA7CiAgICAgICAgfQp9CgpuYW1lc3BhY2Ugc3ViMnsKCiAgICAgICAgaW50IGt0aFtOXSwgZltOXSwgTWFbTl0sIFJhbms7CgogICAgICAgIHZvaWQgZGZzKGludCB1KXsKICAgICAgICAgICAgICAgICsrIGZbUmFua107CiAgICAgICAgICAgICAgICBrdGhbdV0gPSBSYW5rOwogICAgICAgICAgICAgICAgZGVsW3VdID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGZvcihpbnQgdiA6IGdbdV0pIGlmKCFkZWxbdl0gJiYgY1t2XSA9PSBjW3VdKQogICAgICAgICAgICAgICAgICAgICAgICBkZnModik7CiAgICAgICAgfQoKICAgICAgICB2b2lkIHNvbHZlKHZvaWQpewoKICAgICAgICAgICAgICAgIEZPUihpLCAxLCBuKXsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsW2ldID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGZbaV0gPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAga3RoW2ldID0gMDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBSYW5rID0gMDsKCiAgICAgICAgICAgICAgICBGT1IoaSwgMSwgbikgaWYoIWRlbFtpXSl7CiAgICAgICAgICAgICAgICAgICAgICAgICsrIFJhbms7CiAgICAgICAgICAgICAgICAgICAgICAgIGRmcyhpKTsKICAgICAgICAgICAgICAgICAgICAgICAgbWF4aW1pemUocmVzLCBmW1JhbmtdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEZPUih1LCAxLCBuKXsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGludCB2IDogZ1t1XSkgaWYoa3RoW3VdICE9IGt0aFt2XSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFbY1t2XV0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbFtrdGhbdl1dID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IoaW50IHYgOiBnW3VdKSBpZihrdGhbdV0gIT0ga3RoW3ZdICYmICFkZWxba3RoW3ZdXSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFbY1t2XV0gKz0gZltrdGhbdl1dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbFtrdGhbdl1dID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhpbWl6ZShyZXMsIE1hW2Nbdl1dICsgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvdXQgPDwgcmVzIDw8ICJcbiI7CiAgICAgICAgICAgICAgICByZXMgPSAwOwogICAgICAgIH0KfQoKaW50IG1haW4odm9pZCl7CgogICAgICAgIGlmKGZvcGVuKFRhWmluaCIuaW5wIiwgInIiKSkKICAgICAgICAgICAgICAgIFRTdW4oVGFaaW5oKTsKCiAgICAgICAgaW50IFN1bjsgY2luID4+IFN1bjsKICAgICAgICBSRVAobG92ZSwgU3VuKXsKICAgICAgICAgICAgICAgIGNpbiA+PiBuID4+IG07CiAgICAgICAgICAgICAgICBGT1IoaSwgMSwgbil7CiAgICAgICAgICAgICAgICAgICAgICAgIGNpbiA+PiBjW2ldOwogICAgICAgICAgICAgICAgICAgICAgICBnW2ldLmNsZWFyKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBGT1IoaSwgMSwgbSl7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCB1LCB2OyBjaW4gPj4gdSA+PiB2OwogICAgICAgICAgICAgICAgICAgICAgICBpZih1ID09IHYpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICBnW3VdLlBCKHYpOyBnW3ZdLlBCKHUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmKG4gPD0gMTAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgc3ViMSA6OiBzb2x2ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN1YjIgOjogc29sdmUoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cn0K