import sys, math
import io, os
#data = io.BytesIO(os.read(0,os.fstat(0).st_size)).readline
from bisect import bisect_left as bl, bisect_right as br, insort
from heapq import heapify, heappush, heappop
from collections import defaultdict as dd, deque, Counter
# from itertools import permutations,combinations
def data(): return sys.stdin.readline().strip()
def mdata(): return list(map(int, data().split()))
def outl(var): sys.stdout.write(' '.join(map(str, var)) + '\n')
def out(var): sys.stdout.write(str(var) + '\n')
from decimal import Decimal
# from fractions import Fraction
# sys.setrecursionlimit(100000)
mod = int(1e9) + 7
INF=10**8


class RangeQuery:
    def __init__(self, data, func=min):
        self.func = func
        self._data = _data = [list(data)]
        i, n = 1, len(_data[0])
        while 2 * i <= n:
            prev = _data[-1]
            _data.append([func(prev[j], prev[j + i]) for j in range(n - 2 * i + 1)])
            i <<= 1

    def query(self, begin, end):
        depth = (end - begin).bit_length() - 1
        return self.func(self._data[depth][begin], self._data[depth][end - (1 << depth)])


class LCA:
    def __init__(self, root, graph):
        self.time = [-1] * len(graph)
        self.path = [-1] * len(graph)
        self.depth = [0] * len(graph)
        P = [-1] * len(graph)
        t = -1
        dfs = [root]
        while dfs:
            node = dfs.pop()
            self.path[t] = P[node]
            self.time[node] = t = t + 1
            for nei in graph[node]:
                if self.time[nei] == -1:
                    P[nei] = node
                    dfs.append(nei)
                    self.depth[nei]=self.depth[node]+1
        self.rmq = RangeQuery(self.time[node] for node in self.path)

    def __call__(self, a, b):
        if a == b:
            return a
        a = self.time[a]
        b = self.time[b]
        if a > b:
            a, b = b, a
        return self.path[self.rmq.query(a, b)]

n=int(data())
graph=[[] for i in range(n)]
for i in range(n-1):
    u,v=mdata()
    graph[u-1].append(v-1)
    graph[v-1].append(u-1)
L=LCA(0,graph)
for i in range(int(data())):
    x,y,a,b,k=mdata()
    a-=1
    b-=1
    x-=1
    y-=1
    if L.depth[a]+L.depth[b]-2*L.depth[L(a,b)]<=k and (L.depth[a]+L.depth[b]-2*L.depth[L(a,b)])%2==k%2:
        out("YES")
    elif L.depth[a]+L.depth[x]-2*L.depth[L(a,x)] + L.depth[b]+L.depth[y]-2*L.depth[L(b,y)] + 1<=k and (L.depth[a]+L.depth[x]-2*L.depth[L(a,x)] + L.depth[b]+L.depth[y]-2*L.depth[L(b,y)] + 1)%2==k%2:
        out("YES")
    elif L.depth[a]+L.depth[y]-2*L.depth[L(a,y)] + L.depth[b]+L.depth[x]-2*L.depth[L(b,x)] + 1 <=k and (L.depth[a]+L.depth[y]-2*L.depth[L(a,y)] + L.depth[b]+L.depth[x]-2*L.depth[L(b,x)] + 1)%2==k%2:
        out("YES")
    else:
        out("NO")