#include <bits/stdc++.h>
using namespace std;
const int LG = 20, N = 1e5 + 10;
int dis[N][LG + 5], par[N][LG], n, tin[N], tout[N], timer;
vector<int> adj[N];
int32_t main() {
  int n;
  cin >> n;
  for (int i = 0; i < n - 1; i++) {
    int x, y;
    cin >> x >> y;
    adj[x].emplace_back(y);
    adj[y].emplace_back(x);
  }
  function<void(int, int)> dfs = [&](int v, int p) {
    par[v][0] = p;
    dis[v][0] = 1;
    tin[v] = ++timer;
    for (int i = 1; i < LG; i++) {
      par[v][i] = par[par[v][i - 1]][i - 1];
      dis[v][i] = dis[v][i - 1] + dis[par[v][i - 1]][i - 1];
    }
    for (int c : adj[v]) {
      if (c == p) continue;
      dfs(c, v);
    }
    tout[v] = ++timer;
  };
  dfs(1, 1);
  function<bool(int, int)> is_ancestor = [&](int x, int y) {
    return tin[x] <= tin[y] and tout[x] >= tout[y];
  };
  function<int(int, int)> cal = [&](int x, int y) {
    int tot = 0;
    if (is_ancestor(x, y)) tot--;
    if (is_ancestor(y, x)) tot--;
    int xx = x, yy = y;
    for (int i = LG - 1; i >= 0; i--) {
      if (!is_ancestor(par[xx][i], yy)) {
        tot += dis[xx][i];
        xx = par[xx][i];
      }
      if (!is_ancestor(par[y][i], x)) {
        tot += dis[y][i];
        y = par[y][i];
      }
    }
    return tot + 2;
  };
  int q;
  cin >> q;
  while (q--) {
    int x, y, a, b, k;
    cin >> x >> y >> a >> b >> k;
    int without = cal(a, b);
    int with = min(cal(a, x) + cal(y, b), cal(a, y) + cal(x, b)) + 1;
    int ans = 1e8;
    if (without % 2 == k % 2) ans = without;
    if (with % 2 == k % 2) ans = min(ans, with);
    cout << (ans <= k ? "YES" : "NO") << '\n';
  }
}
