#include <bits/stdc++.h>
using namespace std;
#define TEST int t;cin >> t;while (t--)
#define fastio ios_base::sync_with_stdio(0);cin.tie(0); cout.tie(0);
#define ll long long
#define ld long double
template<typename treeType = ll, typename graphType = ll>
class LCA {
public:
LCA(
ll n = 0,
const vector<vector<treeType> > &G = {},
ll root = 1
) : N(n), LOG(0), ROOT(root), adj(G) {
while ((1 << LOG) <= N) LOG++;
anc.assign(N + 5, vector<ll>(LOG));
depth.assign(N + 5, 0);
dfs(ROOT);
}
ll kth_ancestor(ll u, ll k) const {
if (depth[u] < k) return -1;
for (ll bit = 0; bit < LOG; bit++)
if (k & (1 << bit))
u = anc[u][bit];
return u;
}
ll get_lca(ll u, ll v) const {
if (depth[u] < depth[v]) swap(u, v);
u = kth_ancestor(u, depth[u] - depth[v]);
if (u == v) return u;
for (ll bit = LOG - 1; bit >= 0; bit--)
if (anc[u][bit] != anc[v][bit])
u = anc[u][bit], v = anc[v][bit];
return anc[u][0];
}
// treeType query(ll u, ll v) const {
// ll lca = get_lca(u, v);
// return operation(get_cost(u, depth[u] - depth[lca]), get_cost(v, depth[v] - depth[lca]));
// }
private:
ll N, LOG, ROOT;
const vector<vector<treeType> > &adj;
vector<vector<ll> > anc;
// vector < vector < treeType > > cost;
vector<ll> depth;
// function < treeType(treeType, treeType) > operation;
// treeType neutral;
void dfs(ll u, ll p = 0) {
for (auto &v: adj[u]) {
if (v == p) continue;
depth[v] = depth[u] + 1;
anc[v][0] = u;
for (ll bit = 1; bit < LOG; bit++) {
anc[v][bit] = anc[anc[v][bit - 1]][bit - 1];
}
dfs(v, u);
}
}
// treeType get_cost(ll u, ll dist) const {
// if(depth[u] < dist) return neutral;
// treeType ret = neutral;
// for(ll bit = 0; bit < LOG; bit++){
// if(dist & (1 << bit)){
// ret = operation(ret, cost[u][bit]);
// u = anc[u][bit];
// }
// }
// return ret;
// }
};
void solve(ll tc = 1) {
ll n, q;
cin >> n;
vector<vector<ll> > G(n + 2);
for (ll i = 1; i < n; i++) {
ll u, v;
cin >> u >> v;
G[u].push_back(v);
G[v].push_back(u);
}
LCA<ll> g(n, G, 1);
cin >> q;
while (q--) {
ll r, u, v;
cin >> r >> u >> v;
if (r==1) cout << g.get_lca(u, v) << endl;
else cout << max( g.get_lca(u,r) , g.get_lca(v,r) ) << endl ;
}
}
int main() {
fastio
// TEST
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKI2RlZmluZSBURVNUIGludCB0O2NpbiA+PiB0O3doaWxlICh0LS0pCiNkZWZpbmUgZmFzdGlvIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTsgY291dC50aWUoMCk7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKCnRlbXBsYXRlPHR5cGVuYW1lIHRyZWVUeXBlID0gbGwsIHR5cGVuYW1lIGdyYXBoVHlwZSA9IGxsPgpjbGFzcyBMQ0EgewpwdWJsaWM6CiAgICBMQ0EoCiAgICAgICAgbGwgbiA9IDAsCiAgICAgICAgY29uc3QgdmVjdG9yPHZlY3Rvcjx0cmVlVHlwZT4gPiAmRyA9IHt9LAogICAgICAgIGxsIHJvb3QgPSAxCiAgICApIDogTihuKSwgTE9HKDApLCBST09UKHJvb3QpLCBhZGooRykgewogICAgICAgIHdoaWxlICgoMSA8PCBMT0cpIDw9IE4pIExPRysrOwogICAgICAgIGFuYy5hc3NpZ24oTiArIDUsIHZlY3RvcjxsbD4oTE9HKSk7CiAgICAgICAgZGVwdGguYXNzaWduKE4gKyA1LCAwKTsKICAgICAgICBkZnMoUk9PVCk7CiAgICB9CgogICAgbGwga3RoX2FuY2VzdG9yKGxsIHUsIGxsIGspIGNvbnN0IHsKICAgICAgICBpZiAoZGVwdGhbdV0gPCBrKSByZXR1cm4gLTE7CiAgICAgICAgZm9yIChsbCBiaXQgPSAwOyBiaXQgPCBMT0c7IGJpdCsrKQogICAgICAgICAgICBpZiAoayAmICgxIDw8IGJpdCkpCiAgICAgICAgICAgICAgICB1ID0gYW5jW3VdW2JpdF07CiAgICAgICAgcmV0dXJuIHU7CiAgICB9CgogICAgbGwgZ2V0X2xjYShsbCB1LCBsbCB2KSBjb25zdCB7CiAgICAgICAgaWYgKGRlcHRoW3VdIDwgZGVwdGhbdl0pIHN3YXAodSwgdik7CgogICAgICAgIHUgPSBrdGhfYW5jZXN0b3IodSwgZGVwdGhbdV0gLSBkZXB0aFt2XSk7CiAgICAgICAgaWYgKHUgPT0gdikgcmV0dXJuIHU7CgogICAgICAgIGZvciAobGwgYml0ID0gTE9HIC0gMTsgYml0ID49IDA7IGJpdC0tKQogICAgICAgICAgICBpZiAoYW5jW3VdW2JpdF0gIT0gYW5jW3ZdW2JpdF0pCiAgICAgICAgICAgICAgICB1ID0gYW5jW3VdW2JpdF0sIHYgPSBhbmNbdl1bYml0XTsKCiAgICAgICAgcmV0dXJuIGFuY1t1XVswXTsKICAgIH0KCiAgICAvLyB0cmVlVHlwZSBxdWVyeShsbCB1LCBsbCB2KSBjb25zdCB7CiAgICAvLyAgICAgbGwgbGNhID0gZ2V0X2xjYSh1LCB2KTsKICAgIC8vICAgICByZXR1cm4gb3BlcmF0aW9uKGdldF9jb3N0KHUsIGRlcHRoW3VdIC0gZGVwdGhbbGNhXSksIGdldF9jb3N0KHYsIGRlcHRoW3ZdIC0gZGVwdGhbbGNhXSkpOwogICAgLy8gfQoKcHJpdmF0ZToKICAgIGxsIE4sIExPRywgUk9PVDsKICAgIGNvbnN0IHZlY3Rvcjx2ZWN0b3I8dHJlZVR5cGU+ID4gJmFkajsKICAgIHZlY3Rvcjx2ZWN0b3I8bGw+ID4gYW5jOwogICAgLy8gdmVjdG9yIDwgdmVjdG9yIDwgdHJlZVR5cGUgPiA+IGNvc3Q7CiAgICB2ZWN0b3I8bGw+IGRlcHRoOwogICAgLy8gZnVuY3Rpb24gPCB0cmVlVHlwZSh0cmVlVHlwZSwgdHJlZVR5cGUpID4gb3BlcmF0aW9uOwogICAgLy8gdHJlZVR5cGUgbmV1dHJhbDsKCiAgICB2b2lkIGRmcyhsbCB1LCBsbCBwID0gMCkgewogICAgICAgIGZvciAoYXV0byAmdjogYWRqW3VdKSB7CiAgICAgICAgICAgIGlmICh2ID09IHApIGNvbnRpbnVlOwogICAgICAgICAgICBkZXB0aFt2XSA9IGRlcHRoW3VdICsgMTsKICAgICAgICAgICAgYW5jW3ZdWzBdID0gdTsKICAgICAgICAgICAgZm9yIChsbCBiaXQgPSAxOyBiaXQgPCBMT0c7IGJpdCsrKSB7CiAgICAgICAgICAgICAgICBhbmNbdl1bYml0XSA9IGFuY1thbmNbdl1bYml0IC0gMV1dW2JpdCAtIDFdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRmcyh2LCB1KTsKICAgICAgICB9CiAgICB9CgogICAgLy8gdHJlZVR5cGUgZ2V0X2Nvc3QobGwgdSwgbGwgZGlzdCkgY29uc3QgewogICAgLy8gICAgIGlmKGRlcHRoW3VdIDwgZGlzdCkgcmV0dXJuIG5ldXRyYWw7CiAgICAvLyAgICAgdHJlZVR5cGUgcmV0ID0gbmV1dHJhbDsKICAgIC8vICAgICBmb3IobGwgYml0ID0gMDsgYml0IDwgTE9HOyBiaXQrKyl7CiAgICAvLyAgICAgICAgIGlmKGRpc3QgJiAoMSA8PCBiaXQpKXsKICAgIC8vICAgICAgICAgICAgIHJldCA9IG9wZXJhdGlvbihyZXQsIGNvc3RbdV1bYml0XSk7CiAgICAvLyAgICAgICAgICAgICB1ID0gYW5jW3VdW2JpdF07CiAgICAvLyAgICAgICAgIH0KICAgIC8vICAgICB9CiAgICAvLyAgICAgcmV0dXJuIHJldDsKICAgIC8vIH0KfTsKCnZvaWQgc29sdmUobGwgdGMgPSAxKSB7CiAgICBsbCBuLCBxOwogICAgY2luID4+IG47CiAgICB2ZWN0b3I8dmVjdG9yPGxsPiA+IEcobiArIDIpOwoKICAgIGZvciAobGwgaSA9IDE7IGkgPCBuOyBpKyspIHsKICAgICAgICBsbCB1LCB2OwogICAgICAgIGNpbiA+PiB1ID4+IHY7CiAgICAgICAgR1t1XS5wdXNoX2JhY2sodik7CiAgICAgICAgR1t2XS5wdXNoX2JhY2sodSk7CiAgICB9CiAgICBMQ0E8bGw+IGcobiwgRywgMSk7CiAgICBjaW4gPj4gcTsKICAgIHdoaWxlIChxLS0pIHsKICAgICAgICBsbCByLCB1LCB2OwogICAgICAgIGNpbiA+PiByID4+IHUgPj4gdjsKICAgICAgICBpZiAocj09MSkgY291dCA8PCBnLmdldF9sY2EodSwgdikgPDwgZW5kbDsKICAgICAgICBlbHNlIGNvdXQgPDwgbWF4KCBnLmdldF9sY2EodSxyKSAsIGcuZ2V0X2xjYSh2LHIpICkgPDwgZW5kbCA7CiAgICB9Cn0KCgppbnQgbWFpbigpIHsKICAgIGZhc3RpbwogICAgLy8gVEVTVAogICAgc29sdmUoKTsKICAgIHJldHVybiAwOwp9Cg==