import java.io.*;
import java.util.*;

public class Main
{
    static int N , K , ref = 0;
    static int [] head , next , to , level ;
    static int [][] P ;
    static void addEdge(int a , int b , boolean end)
    {
        next[++ref] = head[a] ;
        head[a] = ref ;
        to[ref] = b ;
        if(!end)
            addEdge(b , a , true);
    }
    static void dfs(int u , int p)
    {
        if(p != -1)
            level[u] = level[p] + 1 ;
        P[0][u] = p ;
        for(int i = 1 ; i <= K ; i ++)
            if(P[i - 1][u] != -1)
                P[i][u] = P[i - 1][P[i - 1][u]] ;
        for(int i = head[u] ; i != 0 ; i = next[i])
            if(to[i] != p)
                dfs(to[i] , u);
    }
    static int lca(int u , int v)
    {
        if(level[u] < level[v])return lca(v , u) ;
        for(int d = level[u] - level[v] ; d > 0 ; d &= d - 1)
            u = P[31 - Integer.numberOfLeadingZeros(d & -d)][u];
        if(u == v)return u ;
        for(int i = 31 - Integer.numberOfLeadingZeros(level[v]) ; i >= 0 ; i --)
            if(P[i][u] != -1 && P[i][u] != P[i][v])
            {
                u = P[i][u] ; v = P[i][v] ;
            }
        return P[0][u] ;
    }
    static int dist(int u , int v){return level[u] + level[v] - level[lca(u , v)] * 2;}

    public static void main(String[] args) throws Exception
    {
        Scanner sc = new Scanner();
        PrintWriter out = new PrintWriter(System.out);
        N = sc.nextInt() ;
        K = 31 - Integer.numberOfLeadingZeros(N) ;
        P = new int [K + 1][N] ;
        for(int i = 0 ; i <= K ; i ++)
            Arrays.fill(P[i] , -1);
        head = new int[N] ;
        next = new int [N << 1] ;
        to = new int [N << 1] ;
        level = new int [N] ;
        for(int i = 0 ; i < N - 1 ; i++)
            addEdge(sc.nextInt() - 1 , sc.nextInt() - 1 , false);
        dfs(0 , -1);
        int q = sc.nextInt() ;
        while (q -->0)
        {
            int x = sc.nextInt() - 1, y = sc.nextInt() - 1 ;
            int a = sc.nextInt() - 1 , b = sc.nextInt() - 1 ;
            int k = sc.nextInt() ;
            if((dist(a , b) <= k && Math.abs(k - dist(a , b)) % 2 == 0)
                    ||
                    (dist(a , x) + 1 + dist(y , b) <= k && (dist(a , x) + 1 + dist(y , b) - k) % 2 == 0)
                    ||
                    (dist(a , y) + 1 + dist(x , b) <= k && (dist(a , y) + 1 + dist(x , b) - k) % 2 == 0)
            )
                out.println("YES");
            else
                out.println("NO");
        }
        out.flush();
    }

    static class Scanner
    {
        BufferedReader br;
        StringTokenizer st;

        Scanner() { br = new BufferedReader(new InputStreamReader(System.in)); }

        String next() throws IOException
        {
            while (st == null || !st.hasMoreElements())
                st = new StringTokenizer(br.readLine());
            return st.nextToken();
        }

        int nextInt() throws Exception { return Integer.parseInt(next()); }
    }

}