#include <bits/stdc++.h>
using namespace std;
int read() {
  int x = 0, f = 1;
  char c = getchar();
  while (!isdigit(c)) {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (isdigit(c)) {
    x = (x << 3) + (x << 1) + c - '0';
    c = getchar();
  }
  return x * f;
}
int n, q, head[100005], nxt[100005 << 1], to[100005 << 1], cnt = 0, dep[100005],
                                                           fa[100005][35];
int log2(int x) { return log(x) / log(2); }
void add(int x, int y) {
  cnt++;
  to[cnt] = y;
  nxt[cnt] = head[x];
  head[x] = cnt;
}
void dfs(int x) {
  for (int i = 1; (1 << i) <= dep[x]; i++) {
    fa[x][i] = fa[fa[x][i - 1]][i - 1];
  }
  for (int p = head[x]; p; p = nxt[p]) {
    int v = to[p];
    if (v == fa[x][0]) continue;
    dep[v] = dep[x] + 1;
    fa[v][0] = x;
    dfs(v);
  }
}
int lca(int x, int y) {
  if (dep[x] < dep[y]) swap(x, y);
  while (dep[x] != dep[y]) x = fa[x][log2(dep[x] - dep[y])];
  if (x == y) return x;
  for (int i = log2(dep[x]); i >= 0; i--) {
    if (fa[x][i] != fa[y][i]) x = fa[x][i], y = fa[y][i];
  }
  return fa[x][0];
}
int dis(int x, int y) { return dep[x] + dep[y] - 2 * dep[lca(x, y)]; }
int main() {
  n = read();
  for (int i = 1; i <= n - 1; i++) {
    int x = read(), y = read();
    add(x, y), add(y, x);
  }
  dfs(1);
  q = read();
  while (q--) {
    int x = read(), y = read(), a = read(), b = read(), k = read();
    int t1 = dis(a, b);
    if (t1 <= k && (t1 & 1) == (k & 1)) {
      printf("YES\n");
      continue;
    }
    t1 = dis(a, x) + 1 + dis(y, b);
    if (t1 <= k && (t1 & 1) == (k & 1)) {
      printf("YES\n");
      continue;
    }
    t1 = dis(a, y) + 1 + dis(x, b);
    if (t1 <= k && (t1 & 1) == (k & 1)) {
      printf("YES\n");
      continue;
    }
    printf("NO\n");
  }
  return 0;
}
