#include <bits/stdc++.h>
using namespace std;
const int maxn = 100000;
int n, N, q;
int f[maxn + 5][25];
int dis[maxn + 5];
vector<int> E[maxn + 5];
int get_log(int x) {
  int t = 0;
  while ((1 << (t + 1)) <= x) t++;
  return t;
}
void dfs(int x, int fa) {
  f[x][0] = fa;
  dis[x] = dis[fa] + 1;
  for (int i = 0; i < E[x].size(); i++) {
    int v = E[x][i];
    if (v != fa) {
      dfs(v, x);
    }
  }
}
int get_lca(int u, int v) {
  if (dis[u] < dis[v]) swap(u, v);
  int d = dis[u] - dis[v];
  for (int i = 0; i <= N; i++) {
    if ((1 << i) & d) {
      u = f[u][i];
    }
  }
  if (u == v) return u;
  for (int i = N; i >= 0; i--) {
    if (f[u][i] != f[v][i]) {
      u = f[u][i];
      v = f[v][i];
    }
  }
  return f[u][0];
}
int main() {
  scanf("%d", &n);
  N = get_log(n);
  for (int i = 1; i < n; i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    E[u].push_back(v);
    E[v].push_back(u);
  }
  dis[0] = 0;
  dfs(1, 0);
  for (int j = 1; j <= N; j++)
    for (int i = 1; i <= n; i++) f[i][j] = f[f[i][j - 1]][j - 1];
  scanf("%d", &q);
  while (q--) {
    bool flag = false;
    int x, y, a, b, k, u, v;
    scanf("%d%d%d%d%d", &x, &y, &a, &b, &k);
    u = get_lca(a, b);
    int len = dis[a] + dis[b] - 2 * dis[u];
    if ((len & 1) == (k & 1) && (len <= k)) flag = true;
    if (!flag) {
      u = get_lca(a, x);
      v = get_lca(b, y);
      int len1 =
          dis[a] + dis[x] - 2 * dis[u] + dis[b] + dis[y] - 2 * dis[v] + 1;
      u = get_lca(a, y);
      v = get_lca(b, x);
      int len2 =
          dis[a] + dis[y] - 2 * dis[u] + dis[b] + dis[x] - 2 * dis[v] + 1;
      if (((len1 & 1) == (k & 1) && len1 <= k) ||
          ((len2 & 1) == (k & 1) && len2 <= k))
        flag = true;
    }
    if (flag)
      printf("YES\n");
    else
      printf("NO\n");
  }
  return 0;
}
