#include <bits/stdc++.h>
#define pu push
#define pf push_front
#define pb push_back
#define pof pop_front
#define pob pop_back
#define fi first
#define se second
#define el cout<<"\n"
#define ll long long 
#define ull unsigned long long
#define ld long double
#define MASK(i) (1LL<<(i))
#define BIT(x, i) (((x)>>(i))&1)	
#define SET_ON(x, i) ((x)|MASK(i))
#define SET_OFF(x, i) ((x)&~MASK(i))
#define c_bit(i) __builtin_popcount(i)
const int MAX_SIZE = 100010;
const int LOG = 18;
const int inf = (int)1e9+7;
using namespace std;

mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());

long long random(long long l, long long r){
	return uniform_int_distribution<long long>(l, r)(rng);
}

template<class T1, class T2>
    bool maximize(T1 &x, T2 y){if(x<y){x=y; return true;} return false;}
template<class T1, class T2>
    bool minimize(T1 &x, T2 y){if(x>y){x=y; return true;} return false;}

int numNode, numQuery, length;
int nodeID[MAX_SIZE], height[MAX_SIZE];
int rmq[2*MAX_SIZE+3][LOG], valueID[2*MAX_SIZE+3];

vector<int>adj[MAX_SIZE];

// 13
// 1 3
// 1 5
// 1 2
// 3 6
// 6 9
// 5 4
// 5 7
// 5 13
// 4 8
// 4 10
// 7 11
// 7 12

void pre_dfs(int u, int par){
	++length;
	nodeID[u] = length;
	valueID[length] = u;
	for (auto v:adj[u]) if (v!=par){
		height[v] = height[u] + 1;
		pre_dfs(v, u);
		++length;
		valueID[length] = u;
	}
}

int min_high_node(int u, int v){
	if (height[u] < height[v]) return u;
	return v;
}

int getLCA(int u, int v){
	int l = nodeID[u], r = nodeID[v]; if (l>r) swap(l, r);
	int k = 31 - __builtin_clz(r-l+1);
	return min_high_node(rmq[l][k], rmq[r-MASK(k)+1][k]);
}

void ilovesunshine(){
	cin>>numNode;
	for (int i=1; i<numNode; ++i){
		int u, v; cin>>u>>v;
		adj[u].pb(v);
		adj[v].pb(u);	
	}

	pre_dfs(1, 0);

	for (int i=1; i<=length; ++i){
		rmq[i][0] = valueID[i];
	}

	for (int j=1; j<=LOG; ++j){
		for (int i=1; i+MASK(j)-1<=length; ++i){
			rmq[i][j] = min_high_node(rmq[i][j-1], rmq[i+MASK(j-1)][j-1]);
		} 	
	}

	cin>>numQuery;
	while (numQuery--){
		int u, v; cin>>u>>v;
		cout<<getLCA(u, v)<<"\n";
	}
}

int main(){
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	ilovesunshine();
	return 0;
}