#include <bits/stdc++.h>

using namespace std;

#define int int64_t

int ask(int v) {
	cout << "1 " << v + 1 << endl;
	int x;
	cin >> x;
	if(x == -1) {
		cout << "2 " << v + 1 << endl;
		int t;
		cin >> t;
		return -1;
	}
	return x - 1;
};

vector<vector<int>> g;
vector<int> size, block;

void dfs(int v, int p) {
	size[v] = 1;
	for(auto u: g[v]) {
		if(u != p && !block[u]) {
			dfs(u, v);
			size[v] += size[u];
		}
	}
}
int get(int v, int p, int n) {
	for(auto u: g[v]) {
		if(u != p && 2 * size[u] > n && !block[u]) {
			return get(u, v, n);
		}
	}
	return v;
}

int find_centroid(int v, int p) {
	fill(begin(size), end(size), 0);
	dfs(v, p);
	return get(v, p, size[v]);
}

void solve() {
	int n;
	cin >> n;
	g.assign(n, vector<int>());
	size.assign(n, 0);
	block.assign(n, 0);
	for(int i = 1; i < n; i++) {
		int x, y;
		cin >> x >> y;
		x--, y--;
		g[x].push_back(y);
		g[y].push_back(x);
	}
	int v = find_centroid(0, 0);
	while(true) {
		int u = ask(v);
		if(u != -1) {
			block[v] = 1;
			v = find_centroid(u, v);
		} else {
			break;
		}
	}
}

signed main() {
	//freopen("input.txt", "r", stdin);
	ios::sync_with_stdio(0);
	cin.tie(0);
	int t;
	cin >> t;
	while(t--) {
		solve();
	}
	return 0;
}
