#include <bits/stdc++.h>
using namespace std;
#define all(x) begin(x), end(x)
const int maxn = 2e5 + 42, logn = 20, maxm = 1 << 20;
const int maxs = 2 * maxn * logn * logn;
int L[maxs], R[maxs], mn[maxs];
int rt[maxn];
int sz = 1;
int copy(int v = 0) {
L[sz] = L[v];
R[sz] = R[v];
mn[sz] = mn[v];
return sz++;
}
void upd(int p, int c, int v, int l = 0, int r = maxm) {
mn[v] = min(mn[v], c);
if(r - l > 1) {
int m = (l + r) / 2;
if(p < m) {
upd(p, c, L[v] = copy(L[v]), l, m);
} else {
upd(p, c, R[v] = copy(R[v]), m, r);
}
}
}
pair<int, int> get(int k, int v, int l = 0, int r = maxm) {
if(r - l == 1) {
return {mn[v], l};
} else {
int m = (l + r) / 2;
if(((k ^ (m - l)) < k && L[v]) || !R[v]) {
return get(k, L[v], l, m);
} else {
return get(k, R[v], m, r);
}
}
}
int w[maxn];
vector<int> g[maxn];
set<int> sub[maxn];
void dfs(int v = 1, int p = 1) {
rt[v] = copy();
sub[v] = {v};
upd(w[v], v, rt[v]);
for(auto u: g[v]) {
if(u != p) {
dfs(u, v);
if(sub[v].size() < sub[u].size()) {
rt[v] = copy(rt[u]);
swap(sub[v], sub[u]);
}
for(auto it: sub[u]) {
sub[v].insert(it);
upd(w[it], it, rt[v]);
}
}
}
}
void solve() {
int n, q;
cin >> n >> q;
for(int i = 1; i <= n; i++) {
cin >> w[i];
}
for(int i = 2; i <= n; i++) {
int x, y;
cin >> x >> y;
g[x].push_back(y);
g[y].push_back(x);
}
dfs();
int x = 0, y = 0;
while(q--) {
int k, v;
cin >> v >> k;
v ^= x, k ^= y;
tie(x, y) = get(k, rt[v]);
y ^= k;
cout << x << ' ' << y << "\n";
}
for(int i = 1; i <= n; i++) {
g[i].clear();
sub[i].clear();
}
for(int i = 0; i < sz; i++) {
L[i] = R[i] = 0;
mn[i] = maxm;
}
sz = 1;
}
signed main() {
//freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
ios::sync_with_stdio(0);
cin.tie(0);
fill(mn, mn + maxs, maxm);
int t;
cin >> t;
while(t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBhbGwoeCkgYmVnaW4oeCksIGVuZCh4KQoKY29uc3QgaW50IG1heG4gPSAyZTUgKyA0MiwgbG9nbiA9IDIwLCBtYXhtID0gMSA8PCAyMDsKY29uc3QgaW50IG1heHMgPSAyICogbWF4biAqIGxvZ24gKiBsb2duOwoKaW50IExbbWF4c10sIFJbbWF4c10sIG1uW21heHNdOwppbnQgcnRbbWF4bl07CmludCBzeiA9IDE7CgppbnQgY29weShpbnQgdiA9IDApIHsKCUxbc3pdID0gTFt2XTsKCVJbc3pdID0gUlt2XTsKCW1uW3N6XSA9IG1uW3ZdOwoJcmV0dXJuIHN6Kys7Cn0KCnZvaWQgdXBkKGludCBwLCBpbnQgYywgaW50IHYsIGludCBsID0gMCwgaW50IHIgPSBtYXhtKSB7Cgltblt2XSA9IG1pbihtblt2XSwgYyk7CglpZihyIC0gbCA+IDEpIHsKCQlpbnQgbSA9IChsICsgcikgLyAyOwoJCWlmKHAgPCBtKSB7CgkJCXVwZChwLCBjLCBMW3ZdID0gY29weShMW3ZdKSwgbCwgbSk7CgkJfSBlbHNlIHsKCQkJdXBkKHAsIGMsIFJbdl0gPSBjb3B5KFJbdl0pLCBtLCByKTsKCQl9Cgl9Cn0KcGFpcjxpbnQsIGludD4gZ2V0KGludCBrLCBpbnQgdiwgaW50IGwgPSAwLCBpbnQgciA9IG1heG0pIHsKCWlmKHIgLSBsID09IDEpIHsKCQlyZXR1cm4ge21uW3ZdLCBsfTsKCX0gZWxzZSB7CgkJaW50IG0gPSAobCArIHIpIC8gMjsKCQlpZigoKGsgXiAobSAtIGwpKSA8IGsgJiYgTFt2XSkgfHwgIVJbdl0pIHsKCQkJcmV0dXJuIGdldChrLCBMW3ZdLCBsLCBtKTsKCQl9IGVsc2UgewoJCQlyZXR1cm4gZ2V0KGssIFJbdl0sIG0sIHIpOwoJCX0KCX0KfQoKaW50IHdbbWF4bl07CnZlY3RvcjxpbnQ+IGdbbWF4bl07CnNldDxpbnQ+IHN1YlttYXhuXTsKdm9pZCBkZnMoaW50IHYgPSAxLCBpbnQgcCA9IDEpIHsKCXJ0W3ZdID0gY29weSgpOwoJc3ViW3ZdID0ge3Z9OwoJdXBkKHdbdl0sIHYsIHJ0W3ZdKTsKCWZvcihhdXRvIHU6IGdbdl0pIHsKCQlpZih1ICE9IHApIHsKCQkJZGZzKHUsIHYpOwoJCQlpZihzdWJbdl0uc2l6ZSgpIDwgc3ViW3VdLnNpemUoKSkgewoJCQkJcnRbdl0gPSBjb3B5KHJ0W3VdKTsKCQkJCXN3YXAoc3ViW3ZdLCBzdWJbdV0pOwoJCQl9CgkJCWZvcihhdXRvIGl0OiBzdWJbdV0pIHsKCQkJCXN1Ylt2XS5pbnNlcnQoaXQpOwoJCQkJdXBkKHdbaXRdLCBpdCwgcnRbdl0pOwoJCQl9CgkJfQoJfQp9Cgp2b2lkIHNvbHZlKCkgewoJaW50IG4sIHE7CgljaW4gPj4gbiA+PiBxOwoJZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKCQljaW4gPj4gd1tpXTsKCX0KCWZvcihpbnQgaSA9IDI7IGkgPD0gbjsgaSsrKSB7CgkJaW50IHgsIHk7CgkJY2luID4+IHggPj4geTsKCQlnW3hdLnB1c2hfYmFjayh5KTsKCQlnW3ldLnB1c2hfYmFjayh4KTsKCX0KCWRmcygpOwoJaW50IHggPSAwLCB5ID0gMDsKCXdoaWxlKHEtLSkgewoJCWludCBrLCB2OwoJCWNpbiA+PiB2ID4+IGs7CgkJdiBePSB4LCBrIF49IHk7CgkJdGllKHgsIHkpID0gZ2V0KGssIHJ0W3ZdKTsKCQl5IF49IGs7CgkJY291dCA8PCB4IDw8ICcgJyA8PCB5IDw8ICJcbiI7Cgl9Cglmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCWdbaV0uY2xlYXIoKTsKCQlzdWJbaV0uY2xlYXIoKTsKCX0KCWZvcihpbnQgaSA9IDA7IGkgPCBzejsgaSsrKSB7CgkJTFtpXSA9IFJbaV0gPSAwOwoJCW1uW2ldID0gbWF4bTsKCX0KCXN6ID0gMTsKfQoKc2lnbmVkIG1haW4oKSB7CgkvL2ZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwoJLy9mcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7CgljaW4udGllKDApOwoJZmlsbChtbiwgbW4gKyBtYXhzLCBtYXhtKTsKCWludCB0OwoJY2luID4+IHQ7Cgl3aGlsZSh0LS0pIHsKCQlzb2x2ZSgpOwoJfQoJcmV0dXJuIDA7Cn0K