import sys
range = xrange
input = raw_input

def main():
    def init1(data): 
        global _data
        _data = [list(data)]
        i, n = 1, len(_data[0])
        while 2 * i <= n:
            prev = _data[-1]
            _data.append([min(prev[j], prev[j + i]) for j in range(n - 2 * i + 1)])
            i <<= 1
     
    def query(begin, end):
        depth = (end - begin).bit_length() - 1
        tmp = _data[depth]
        return min(tmp[begin], tmp[end - (1 << depth)])
     
     
    def init2(root, graph):
        global time, path
        time = [-1] * len(graph)
        path = [-1] * len(graph)
        P = [-1] * len(graph)
        t = -1
        dfs = [root]
        while dfs:
            node = dfs.pop()
            path[t] = P[node]
            time[node] = t = t + 1
            for nei in graph[node]:
                if time[nei] == -1:
                    P[nei] = node
                    dfs.append(nei)
        init1(time[node] for node in path)
     
    def dist(a, b):
        if a == b:
            return 0
        c = time[a]
        d = time[b]
        if c > d:
            c, d = d, c
        return depth[a] + depth[b] - 2 * depth[path[query(c, d)]]
         
    inp = [int(x) for x in sys.stdin.read().split()]; ii = 0
     
    n = inp[ii]; ii += 1
    coupl = [[] for _ in range(n)]
    for _ in range(n - 1):
        u = inp[ii] - 1; ii += 1
        v = inp[ii] - 1; ii += 1
        coupl[u].append(v)
        coupl[v].append(u)
     
    root = 0
    init2(root, coupl)
    depth = [-1]*n
    depth[root] = 0
    bfs = [root]
    for node in bfs:
        for nei in coupl[node]: 
            if depth[nei] == -1:
                depth[nei] = depth[node] + 1
                bfs.append(nei)
     
    q = inp[ii]; ii += 1
    out = []
    for _ in range(q):
        x = inp[ii] - 1; ii += 1
        y = inp[ii] - 1; ii += 1
        a = inp[ii] - 1; ii += 1
        b = inp[ii] - 1; ii += 1
        k = inp[ii]; ii += 1
     
        dist(0,0), dist(0,1)# this line makes everything 2 s faster for no reason
        dists = [dist(a,b), dist(a,x) + dist(b,y) + 1, dist(a,y) + dist(b,x) + 1]
     
        for d in dists:
            if d - k & 1 == 0 and d <= k:
                out.append('YES')
                break
        else:
            out.append('NO')
    print '\n'.join(out)
main()