#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 3e5 + 10, MOD = 998244353;
vector <int> E[N];
int n, k;
int dep[N] = {};
int st[N][23];
int data[N][55];
int fastmi(int, int);
void dfs(int now, int father) {
dep[now] = dep[father] + 1;
st[now][0] = father;
for (int i = 1;i <= 50;i++) {
data[now][i] = (data[father][i] + fastmi(dep[now], i) + MOD) % MOD;
}
for (int to : E[now]) {
if (to == father) continue;
dfs(to, now);
}
}
int lca(int a, int b) {
if (dep[a] < dep[b]) swap(a, b);
for (int j = 20;j >= 0;j--) {
if (dep[st[a][j]] >= b) {
a = st[a][j];
}
}
if (a == b) return b;
for (int j = 20;j >= 0;j--) {
if (st[a][j] != st[b][j]) {
a = st[a][j], b = st[b][j];
}
}
return st[a][0];
}
int fastmi(int a, int b) {
int res = 1;
while (b) {
if (b & 1) res = res * a % MOD;
a = a * a % MOD;
b >>= 1;
}
return res % MOD;
}
signed main() {
scanf("%lld", &n);
for (int i = 1;i < n;i++) {
int f, t;
scanf("%lld%lld", &f, &t);
E[f].push_back(t);
}
dep[1] = -1;
dfs(1, 1);
for (int j = 1;j <= 21;j++) {
for (int i = 1;i <= n;i++) {
st[i][j] = st[st[i][j - 1]][j - 1];
}
}
scanf("%lld", &k);
int a, b, c;
while (k--) {
scanf("%lld%lld%lld", &a, &b, &c);
int ff = lca(a, b);
int sum1 = (data[a][c] + data[b][c] + MOD) % MOD;
int sum2 = (data[ff][c] + data[st[ff][0]][c] + MOD) % MOD;
printf("%lld\n", ((sum1 - sum2) + MOD) % MOD);
}
return 0;
}