// ROOT : DRAGON3012009 : WA in Real Life
#include <bits/stdc++.h>
#define FOR(i,l,r) for(int i = l ; i <= r ; i ++)
#define FORD(i,r,l) for(int i = r ; i >= l ; i --)
#define REP(i, a ) for(int i = 0 ; i < a ; i ++ )
#define compare(v) sort((v).begin(), (v).end()); (v).erase(unique((v).begin(), (v).end()), (v).end());
#define ll int
#define el "\n"
#define fi first
#define se second
#define _ROOT_ int main()
#define M 1000000007
#define MAXN 1000001
#define INF (1ll<<30)
#define NAME "file"
#define debug(a) cout << #a << " = " << a << endl;
using namespace std;
ll n, m, q ;
ll a[MAXN] ;
ll lab[MAXN ] ;
vector<ll> adj[MAXN ] ;
vector<pair<ll,ll>> history ;
ll find_set(ll a ) {
return lab[a] < 0 ? a : find_set(lab[a]) ;
}
bool union_set(ll a, ll b ) {
a = find_set(a) ;
b = find_set(b) ;
if(a == b ) return false ;
if(lab[a] > lab[b] ) swap(a, b ) ;
history.push_back({a, lab[a] }) ;
history.push_back({b, lab[b] }) ;
lab[a] += lab[b] ;
lab[b] = a ;
return true ;
}
void rollBack(ll te ) {
while(history.size() > te ) {
lab[history.back().fi ] = history.back().se ;
history.pop_back() ;
}
}
bool cmp(ll x, ll y ) {
return a[x] < a[y] ;
}
void init() {
history.clear() ;
cin >> n >> m ;
FOR(i, 1, n ) {
cin >> a[i] ;
lab[i] = - 1 ;
}
FOR(i, 1, m ) {
ll x, y ;
cin >> x >> y ;
adj[x].push_back(y) ;
adj[y].push_back(x) ;
if(a[x] == a[y]) union_set(x, y ) ;
}
}
void solve() {
ll ans = 0 ;
FOR(u, 1, n ) ans = max(ans, -lab[u]) ;
// FOR(i , 1 , n ) debug(lab[i]) ;
FOR(u, 1, n ) {
sort(adj[u].begin(), adj[u].end(), cmp ) ;
// cout << u << " u : " ;
// for(ll v : adj[u]) cout << v << " " ; cout << el ;
}
FOR(u, 1, n ) {
ll last = -1 ;
ll snap = history.size() ;
ll cur_color = - 1 ;
for(ll v : adj[u] ) {
if(last != a[v] ) {
rollBack(snap ) ;
last = a[v] ;
cur_color = v ;
}
last = a[v] ;
union_set(v, cur_color ) ;
if(a[u] == a[v ]) ans = max(ans, -lab[find_set(cur_color)] ) ;
else ans = max(ans, -lab[find_set(cur_color)] + 1 ) ;
}
rollBack(snap ) ;
}
FOR(i , 1 , n ) adj[i].clear() ;
cout << ans << el ;
}
_ROOT_ {
// freopen(NAME".inp" , "r" , stdin);
// freopen(NAME".out" , "w", stdout) ;
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t = 1;
cin >> t ;
while(t--) {
init();
solve();
}
return (0&0);
}
Ly8gUk9PVCA6IERSQUdPTjMwMTIwMDkgOiBXQSBpbiBSZWFsIExpZmUKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRk9SKGksbCxyKSBmb3IoaW50IGkgPSBsIDsgaSA8PSByIDsgaSArKykKI2RlZmluZSBGT1JEKGkscixsKSBmb3IoaW50IGkgPSByIDsgaSA+PSBsIDsgaSAtLSkKI2RlZmluZSBSRVAoaSwgYSApIGZvcihpbnQgaSA9IDAgOyBpIDwgYSA7IGkgKysgKQojZGVmaW5lIGNvbXBhcmUodikgc29ydCgodikuYmVnaW4oKSwgKHYpLmVuZCgpKTsgKHYpLmVyYXNlKHVuaXF1ZSgodikuYmVnaW4oKSwgKHYpLmVuZCgpKSwgKHYpLmVuZCgpKTsKI2RlZmluZSBsbCBpbnQKI2RlZmluZSBlbCAiXG4iCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBfUk9PVF8gaW50IG1haW4oKQojZGVmaW5lIE0gMTAwMDAwMDAwNwojZGVmaW5lIE1BWE4gMTAwMDAwMQojZGVmaW5lIElORiAoMWxsPDwzMCkKI2RlZmluZSBOQU1FICJmaWxlIgojZGVmaW5lIGRlYnVnKGEpIGNvdXQgPDwgI2EgPDwgIiA9ICIgPDwgYSA8PCBlbmRsOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbGwgbiwgbSwgcSA7CmxsIGFbTUFYTl0gOwpsbCBsYWJbTUFYTiBdIDsKdmVjdG9yPGxsPiBhZGpbTUFYTiBdIDsKdmVjdG9yPHBhaXI8bGwsbGw+PiBoaXN0b3J5IDsKCmxsIGZpbmRfc2V0KGxsIGEgKSB7CiAgICByZXR1cm4gbGFiW2FdIDwgMCA/IGEgOiBmaW5kX3NldChsYWJbYV0pIDsKfQoKYm9vbCB1bmlvbl9zZXQobGwgYSwgbGwgYiApIHsKICAgIGEgPSBmaW5kX3NldChhKSA7CiAgICBiID0gZmluZF9zZXQoYikgOwogICAgaWYoYSA9PSBiICkgcmV0dXJuIGZhbHNlIDsKICAgIGlmKGxhYlthXSA+IGxhYltiXSApIHN3YXAoYSwgYiApIDsKICAgIGhpc3RvcnkucHVzaF9iYWNrKHthLCBsYWJbYV0gfSkgOwogICAgaGlzdG9yeS5wdXNoX2JhY2soe2IsIGxhYltiXSB9KSA7CiAgICBsYWJbYV0gKz0gbGFiW2JdIDsKICAgIGxhYltiXSA9IGEgOwogICAgcmV0dXJuIHRydWUgOwp9Cgp2b2lkIHJvbGxCYWNrKGxsIHRlICkgewogICAgd2hpbGUoaGlzdG9yeS5zaXplKCkgPiB0ZSApIHsKICAgICAgICBsYWJbaGlzdG9yeS5iYWNrKCkuZmkgXSA9IGhpc3RvcnkuYmFjaygpLnNlIDsKICAgICAgICBoaXN0b3J5LnBvcF9iYWNrKCkgOwogICAgfQp9Cgpib29sIGNtcChsbCB4LCBsbCB5ICkgewogICAgcmV0dXJuIGFbeF0gPCBhW3ldIDsKfQoKdm9pZCBpbml0KCkgewogICAgaGlzdG9yeS5jbGVhcigpIDsKICAgIGNpbiA+PiBuICA+PiBtIDsKICAgIEZPUihpLCAxLCBuICkgewogICAgICAgIGNpbiA+PiBhW2ldIDsKICAgICAgICBsYWJbaV0gPSAtIDEgOwogICAgfQogICAgRk9SKGksIDEsIG0gKSB7CiAgICAgICAgbGwgeCwgeSA7CiAgICAgICAgY2luID4+IHggPj4geSA7CiAgICAgICAgYWRqW3hdLnB1c2hfYmFjayh5KSA7CiAgICAgICAgYWRqW3ldLnB1c2hfYmFjayh4KSA7CiAgICAgICAgaWYoYVt4XSA9PSBhW3ldKSB1bmlvbl9zZXQoeCwgeSApIDsKICAgIH0KfQoKdm9pZCBzb2x2ZSgpIHsKICAgIGxsIGFucyA9IDAgOwoKICAgIEZPUih1LCAxLCBuICkgYW5zID0gbWF4KGFucywgLWxhYlt1XSkgOwoKLy8gICAgRk9SKGkgLCAxICwgbiApIGRlYnVnKGxhYltpXSkgOwoKICAgIEZPUih1LCAxLCBuICkgewogICAgc29ydChhZGpbdV0uYmVnaW4oKSwgYWRqW3VdLmVuZCgpLCBjbXAgKSA7Ci8vICAgIGNvdXQgPDwgdSA8PCAiIHUgOiAiICA7Ci8vICAgIGZvcihsbCB2IDogYWRqW3VdKSBjb3V0IDw8IHYgPDwgIiAiIDsgY291dCA8PCBlbCA7CiAgICB9CgoKICAgIEZPUih1LCAxLCBuICkgewogICAgICAgIGxsIGxhc3QgPSAtMSA7CiAgICAgICAgbGwgc25hcCA9IGhpc3Rvcnkuc2l6ZSgpIDsKICAgICAgICBsbCBjdXJfY29sb3IgPSAtIDEgOwogICAgICAgIGZvcihsbCB2IDogYWRqW3VdICkgewogICAgICAgICAgICBpZihsYXN0ICE9IGFbdl0gKSB7CiAgICAgICAgICAgICAgICByb2xsQmFjayhzbmFwICkgOwogICAgICAgICAgICAgICAgbGFzdCA9IGFbdl0gOwogICAgICAgICAgICAgICAgY3VyX2NvbG9yID0gdiA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFzdCA9IGFbdl0gOwogICAgICAgICAgICB1bmlvbl9zZXQodiwgY3VyX2NvbG9yICkgOwogICAgICAgICAgICBpZihhW3VdID09IGFbdiBdKSBhbnMgPSBtYXgoYW5zLCAtbGFiW2ZpbmRfc2V0KGN1cl9jb2xvcildICApIDsKICAgICAgICAgICAgZWxzZSBhbnMgPSBtYXgoYW5zLCAtbGFiW2ZpbmRfc2V0KGN1cl9jb2xvcildICsgMSApIDsKICAgICAgICB9CiAgICAgICAgcm9sbEJhY2soc25hcCApIDsKICAgIH0KICAgIEZPUihpICwgMSAsIG4gKSBhZGpbaV0uY2xlYXIoKSA7CiAgICBjb3V0IDw8IGFucyA8PCBlbCA7Cn0KCl9ST09UXyB7CiAgICAvLyBmcmVvcGVuKE5BTUUiLmlucCIgLCAiciIgLCBzdGRpbik7CiAgICAvLyBmcmVvcGVuKE5BTUUiLm91dCIgLCAidyIsIHN0ZG91dCkgOwogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAgICBjb3V0LnRpZSgwKTsKICAgIGludCB0ID0gMTsKICAgIGNpbiA+PiB0IDsKICAgIHdoaWxlKHQtLSkgewogICAgICAgIGluaXQoKTsKICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgcmV0dXJuICgwJjApOwp9Cg==