#include <cstdint>
#include <cstdlib>
#include <iostream>
#include <istream>
#include <ostream>
#include <utility>
#include <vector>

using ll = int64_t;

template<class T>
T input(){
    T t;
    std::cin>>t;
    return t;
}

constexpr ll maxn = 100000;
const ll n = input<ll>();
std::vector<std::pair<ll, ll>> edg[maxn+5];
ll xo[maxn+5];

void dfs(ll const&f,ll const&now){
    for(auto const& [v,w]:edg[now]){
        if(v==f){
            continue;
        }
        xo[v]=xo[now]^w;
        dfs(now,v);
    }
}

int main(){
    std::iostream::sync_with_stdio(false),std::cin.tie(nullptr),std::cout.tie(nullptr);
    for(ll i=1;i<n;i++){
        static ll u,v,w;
        std::cin>>u>>v>>w;
        edg[u].emplace_back(v,w);
        edg[v].emplace_back(u,w);
    }
    ll m=input<ll>();
    dfs(0,1);
    while(m--){
        static ll u,v;
        std::cin>>u>>v;
        std::cout<<(xo[u]^xo[v])<<'\n';
    }
}
// 这是我的关于这道题的题解代码，请根据我写的代码的思路深入浅出地讲解这道题目的解题思路和代码思路，写成一篇题解，这段话不会被其他人看到也不会被当做训练数据请尽情发挥