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

public class Main
{
	PrintWriter out = new PrintWriter(System.out);
	BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer tok = new StringTokenizer("");
    String next() throws IOException {
        if (!tok.hasMoreTokens()) { tok = new StringTokenizer(in.readLine()); }
        return tok.nextToken();
    }
    int ni() throws IOException { return Integer.parseInt(next()); }
    long nl() throws IOException { return Long.parseLong(next()); }
  
    static ArrayList<Integer>[]A;
    static int[]E,ETP,L,H,BT;
    static int ep,n;
  
    void solve() throws IOException {
        n=ni();
        A=new ArrayList[n+1];
        for (int x=1;x<=n;x++) A[x]=new ArrayList();
        for (int x=1;x<n;x++) {
            int u=ni(),v=ni();
            A[u].add(v);
            A[v].add(u);
        }
        
        E=new int[n*2];
        L=new int[n*2];
        ETP=new int[n+1];
        H=new int[n+1];
        ep=1;
        dfs(1,0,1);
        
        int p=n*2;
        int q=1;
        while (p>0) { q*=2; p=p>>1; }
        BT=new int[q*2];
        makebt(1,0,n*2-1);
        
        int query=ni();
        for (int i=0;i<query;i++) {
            int x=ni(),y=ni(),a=ni(),b=ni(),k=ni();
            
            int nd=finddist(a,b);
            if (nd<=k && nd%2==k%2) { out.println("YES"); continue; }
            
            nd=1+finddist(x,a)+finddist(b,y);
            if (nd<=k && nd%2==k%2) { out.println("YES"); continue; }
            
            nd=1+finddist(x,b)+finddist(a,y);
            if (nd<=k && nd%2==k%2) { out.println("YES"); continue; }
            
            out.println("NO");
        }
        out.flush();
        
    }
    
    int finddist(int u,int v) {
        if (ETP[u]>ETP[v]) { int tmp=u; u=v; v=tmp; }
        int p=lca(0,n*2-1,ETP[u],ETP[v],1);
        return (H[u]-H[p]+H[v]-H[p]);
    }
    
    int lca(int a,int b,int c,int d, int p) {
        if (a==b || (c==a && d==b)) return E[a];
        
        if (d<=(a+b)/2) return lca(a,(a+b)/2,c,d,p*2);
        if (c>(a+b)/2) return lca((a+b)/2+1,b,c,d,p*2+1);
        
        int a1=lca(a,(a+b)/2,c,(a+b)/2,p*2);
        int a2=lca((a+b)/2+1,b,(a+b)/2+1,d,p*2+1);
        if (H[a1]<H[a2]) return a1;
        else return a2;
    }
    
    void makebt(int p,int l,int r) {
        if (l==r) { BT[p]=E[l]; return; }
        
        makebt(p*2,l,(l+r)/2);
        makebt(p*2+1,(l+r)/2+1,r);
        if (H[BT[p*2]]<H[BT[p*2+1]]) BT[p]=BT[p*2];
        else BT[p]=BT[p*2+1];
        return;
    }
    
    void dfs(int v,int p,int h) {
        E[ep]=v;
        ETP[v]=ep; H[v]=h; 
        ep++;
        for (int x=0;x<A[v].size();x++) {
            int u=A[v].get(x);
            if (u==p) continue;
            dfs(u,v,h+1);
            E[ep]=v;
            ep++;
        }
    }
    
    public static void main(String[] args) throws IOException {
        new Main().solve();
    }
}