#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
long long A[2000050];
int main()
{
int T;
cin >> T;
while(T--)
{
memset(A, 0, sizeof(A));
int N;
long long M;
cin >> N >> M;
if(N == 1)
{
cout << 1 << endl;
continue;
}
int k, p;
k = p = 0;
for(int i=1; i<=N; i++)
{
cin >> A[i];
if(A[i] > A[k])
k = i;
}
for(int i=1; i<=N-1; i++)
{
int u, v;
cin >> u >> v;
if(u==k)
{
if(A[v] > A[p] || (A[v] == A[p] && v < p))
p = v;
}
else if(v==k)
{
if(A[u] > A[p] || (A[u] == A[p] && u < p))
p = u;
}
}
if(p == 0)
{
cout << k << endl;
continue;
}
M -= (A[k] - A[p]);
if(M < 0)
{
cout << k << endl;
continue;
}
if(M % 2)
cout << max(k, p) << endl;
else
cout << min(k, p) << endl;
}
return 0;
}