// Author :- Tushar || 13-04-2025 10:43:52
#include <bits/stdc++.h>
#define int long long
using namespace std;
/*
∧_∧
(。・ω・。)つ━☆・*。
⊂/ / ・゜
しーJ °。+ * 。
.・゜
*/
vector<vector<int>> adj;
vector<int> size, heavy, parent, depth;
//linear tree == lt, pos == position in linear tree
vector<int> head, lt, pos;
int idx;
void dfsHLD(int node, int chain) {
head[node] = chain;
// lt[idx] = value[node];
pos[node] = idx;
idx++;
if(heavy[node] != 0) {
dfsHLD(heavy[node], chain);
}
for(auto it : adj[node]) {
if(heavy[node] != it) {
dfsHLD(it, it);
}
}
}
void dfs(int node) {
for(auto it : adj[node]) {
depth[it] = depth[node] + 1;
parent[it] = node;
dfs(it);
size[node] += size[it];
if(size[it] > size[heavy[node]]) heavy[node] = it;
}
size[node]++;
}
int lca(int a, int b) {
}
void solve() {
int n;
cin >> n;
size.resize(n + 1);
heavy.resize(n + 1);
parent.resize(n + 1);
depth.resize(n + 1);
dfs(1);
dfsHLD(1, 1);
head.resize(n + 1);
pos.resize(n + 1);
idx = 0;
int q;
cin >> q;
while(q--) {
int a, b;
cin >> a >> b;
cout <<lca(a, b);
}
while
}
int32_t main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int tt = 0;
cin >> tt;
while(tt--) {
solve();
}
return 0;
}