//teja349
#include <bits/stdc++.h>
#include <vector>
#include <set>
#include <map>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <climits>
#include <utility>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <iomanip>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
//setbase - cout << setbase (16); cout << 100 << endl; Prints 64
//setfill - cout << setfill ('x') << setw (5); cout << 77 << endl; prints xxx77
//setprecision - cout << setprecision (14) << f << endl; Prints x.xxxx
//cout.precision(x) cout<<fixed<<val; // prints x digits after decimal in val
using namespace std;
using namespace __gnu_pbds;
#define f(i,a,b) for(i=a;i<b;i++)
#define rep(i,n) f(i,0,n)
#define fd(i,a,b) for(i=a;i>=b;i--)
#define pb push_back
#define mp make_pair
#define vi vector< int >
#define vl vector< ll >
#define ss second
#define ff first
#define ll long long
#define pii pair< int,int >
#define pll pair< ll,ll >
#define sz(a) a.size()
#define inf (1000*1000*1000+5)
#define all(a) a.begin(),a.end()
#define tri pair<int,pii>
#define vii vector<pii>
#define vll vector<pll>
#define viii vector<tri>
#define mod (1000*1000*1000+7)
#define pqueue priority_queue< int >
#define pdqueue priority_queue< int,vi ,greater< int > >
#define flush fflush(stdout)
#define primeDEN 727999983
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
// find_by_order() // order_of_key
typedef tree<
int,
null_type,
less<int>,
rb_tree_tag,
tree_order_statistics_node_update>
ordered_set;
#define int ll
vector<vi> in(123456),out(123456);
int a[123456],u[123456],v[123456],val[123456],dp[123456];
vii vec;
main(){
std::ios::sync_with_stdio(false); cin.tie(NULL);
int t;
cin>>t;
while(t--){
int n,m;
cin>>n>>m;
int i,j;
vec.clear();
rep(i,n){
cin>>a[i];
in[i].clear();
out[i].clear();
vec.pb(mp(a[i],i));
}
sort(all(vec));
//vec1.clear();
rep(i,m){
cin>>u[i]>>v[i];
u[i]--;
v[i]--;
if(a[u[i]]==a[v[i]])
continue;
if(a[u[i]]>a[v[i]]){
swap(u[i],v[i]);
}
val[i]=a[v[i]]-a[u[i]];
in[v[i]].pb(i);
out[u[i]].pb(i);
dp[i]=1;
}
vii::iterator it;
vii vec1;
int gg;
int ind;
rep(i,n){
gg=vec[i].ss;
vec1.clear();
rep(j,in[gg].size()){
ind = in[gg][j];
vec1.pb(mp(val[ind],dp[ind]));
}
sort(all(vec1));
f(j,1,vec1.size()){
vec1[j].ss=max(vec1[j].ss,vec1[j-1].ss);
}
rep(j,out[gg].size()){
ind=out[gg][j];
it=lower_bound(all(vec1),mp(val[ind],-10LL));
if(it==vec1.begin())
continue;
it--;
dp[ind] = max(dp[ind],it->ss+1);
}
}
int ans=0;
rep(i,m){
ans=max(ans,dp[i]);
}
cout<<ans+1<<endl;
}
return 0;
}
Ly90ZWphMzQ5CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGNsaW1pdHM+CiNpbmNsdWRlIDx1dGlsaXR5PgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPHN0YWNrPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgojaW5jbHVkZSA8ZXh0L3BiX2RzL3RyZWVfcG9saWN5LmhwcD4gCi8vc2V0YmFzZSAtIGNvdXQgPDwgc2V0YmFzZSAoMTYpOyBjb3V0IDw8IDEwMCA8PCBlbmRsOyBQcmludHMgNjQKLy9zZXRmaWxsIC0gICBjb3V0IDw8IHNldGZpbGwgKCd4JykgPDwgc2V0dyAoNSk7IGNvdXQgPDwgNzcgPDwgZW5kbDsgcHJpbnRzIHh4eDc3Ci8vc2V0cHJlY2lzaW9uIC0gY291dCA8PCBzZXRwcmVjaXNpb24gKDE0KSA8PCBmIDw8IGVuZGw7IFByaW50cyB4Lnh4eHgKLy9jb3V0LnByZWNpc2lvbih4KSAgY291dDw8Zml4ZWQ8PHZhbDsgIC8vIHByaW50cyB4IGRpZ2l0cyBhZnRlciBkZWNpbWFsIGluIHZhbAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CgojZGVmaW5lIGYoaSxhLGIpIGZvcihpPWE7aTxiO2krKykKI2RlZmluZSByZXAoaSxuKSBmKGksMCxuKQojZGVmaW5lIGZkKGksYSxiKSBmb3IoaT1hO2k+PWI7aS0tKQojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHZpIHZlY3RvcjwgaW50ID4KI2RlZmluZSB2bCB2ZWN0b3I8IGxsID4KI2RlZmluZSBzcyBzZWNvbmQKI2RlZmluZSBmZiBmaXJzdAojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHBpaSBwYWlyPCBpbnQsaW50ID4KI2RlZmluZSBwbGwgcGFpcjwgbGwsbGwgPgojZGVmaW5lIHN6KGEpIGEuc2l6ZSgpCiNkZWZpbmUgaW5mICgxMDAwKjEwMDAqMTAwMCs1KQojZGVmaW5lIGFsbChhKSBhLmJlZ2luKCksYS5lbmQoKQojZGVmaW5lIHRyaSBwYWlyPGludCxwaWk+CiNkZWZpbmUgdmlpIHZlY3RvcjxwaWk+CiNkZWZpbmUgdmxsIHZlY3RvcjxwbGw+CiNkZWZpbmUgdmlpaSB2ZWN0b3I8dHJpPgojZGVmaW5lIG1vZCAoMTAwMCoxMDAwKjEwMDArNykKI2RlZmluZSBwcXVldWUgcHJpb3JpdHlfcXVldWU8IGludCA+CiNkZWZpbmUgcGRxdWV1ZSBwcmlvcml0eV9xdWV1ZTwgaW50LHZpICxncmVhdGVyPCBpbnQgPiA+CiNkZWZpbmUgZmx1c2ggZmZsdXNoKHN0ZG91dCkgCiNkZWZpbmUgcHJpbWVERU4gNzI3OTk5OTgzCm10MTk5Mzcgcm5nKGNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkuY291bnQoKSk7CgovLyBmaW5kX2J5X29yZGVyKCkgIC8vIG9yZGVyX29mX2tleQp0eXBlZGVmIHRyZWU8CmludCwKbnVsbF90eXBlLApsZXNzPGludD4sCnJiX3RyZWVfdGFnLAp0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+Cm9yZGVyZWRfc2V0OwoKI2RlZmluZSBpbnQgbGwKCnZlY3Rvcjx2aT4gaW4oMTIzNDU2KSxvdXQoMTIzNDU2KTsKaW50IGFbMTIzNDU2XSx1WzEyMzQ1Nl0sdlsxMjM0NTZdLHZhbFsxMjM0NTZdLGRwWzEyMzQ1Nl07CnZpaSB2ZWM7CgptYWluKCl7CiAgICBzdGQ6Omlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKTsKCWludCB0OwoJY2luPj50OwoJd2hpbGUodC0tKXsKCQlpbnQgbixtOwoJCWNpbj4+bj4+bTsKCQlpbnQgaSxqOwoJCXZlYy5jbGVhcigpOwoJCXJlcChpLG4pewoJCQljaW4+PmFbaV07CgkJCWluW2ldLmNsZWFyKCk7CgkJCW91dFtpXS5jbGVhcigpOwoJCQl2ZWMucGIobXAoYVtpXSxpKSk7CgkJfQoJCXNvcnQoYWxsKHZlYykpOwoJCS8vdmVjMS5jbGVhcigpOwoJCXJlcChpLG0pewoJCQljaW4+PnVbaV0+PnZbaV07CgkJCXVbaV0tLTsKCQkJdltpXS0tOwoJCQlpZihhW3VbaV1dPT1hW3ZbaV1dKQoJCQkJY29udGludWU7CgkJCWlmKGFbdVtpXV0+YVt2W2ldXSl7CgkJCQlzd2FwKHVbaV0sdltpXSk7CgkJCX0KCQkJdmFsW2ldPWFbdltpXV0tYVt1W2ldXTsKCQkJaW5bdltpXV0ucGIoaSk7CgkJCW91dFt1W2ldXS5wYihpKTsKCQkJZHBbaV09MTsKCQl9CgkJdmlpOjppdGVyYXRvciBpdDsKCQl2aWkgdmVjMTsKCQlpbnQgZ2c7CgkJaW50IGluZDsKCQlyZXAoaSxuKXsKCQkJZ2c9dmVjW2ldLnNzOwoJCQl2ZWMxLmNsZWFyKCk7CgkJCXJlcChqLGluW2dnXS5zaXplKCkpewoJCQkJaW5kID0gaW5bZ2ddW2pdOwoJCQkJdmVjMS5wYihtcCh2YWxbaW5kXSxkcFtpbmRdKSk7CgkJCX0KCQkJc29ydChhbGwodmVjMSkpOwoJCQlmKGosMSx2ZWMxLnNpemUoKSl7CgkJCQl2ZWMxW2pdLnNzPW1heCh2ZWMxW2pdLnNzLHZlYzFbai0xXS5zcyk7CgkJCX0KCQkJcmVwKGosb3V0W2dnXS5zaXplKCkpewoJCQkJaW5kPW91dFtnZ11bal07CgkJCQlpdD1sb3dlcl9ib3VuZChhbGwodmVjMSksbXAodmFsW2luZF0sLTEwTEwpKTsKCQkJCWlmKGl0PT12ZWMxLmJlZ2luKCkpCgkJCQkJY29udGludWU7CgkJCQlpdC0tOwoJCQkJZHBbaW5kXSA9IG1heChkcFtpbmRdLGl0LT5zcysxKTsKCQkJfQoJCX0KCQlpbnQgYW5zPTA7CgkJcmVwKGksbSl7CgkJCWFucz1tYXgoYW5zLGRwW2ldKTsKCQl9CgkJY291dDw8YW5zKzE8PGVuZGw7Cgl9CiAgICByZXR1cm4gMDsgICAKfQ==