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

public class Trees{
    static int lim=100050,n,a,b,x,y,k,q;
    static int[] eul=new int[lim*2],lvl=new int[lim*2],depth= new int[lim],st=new int[lim*16],index= new int[lim];
    static int epnt,lpnt;
    static ArrayList<Integer>[] adj= new ArrayList[lim];
    public static void eulDFS(int node,int parent,int d){
        index[node]=epnt;eul[epnt++]=node;lvl[lpnt++]=d;depth[node]=d;
        ArrayList<Integer> A=adj[node];
        for (int i = 0; i < A.size();i++) {
            if(A.get(i)!=parent){eulDFS(A.get(i), node, d+1);eul[epnt++]=node;lvl[lpnt++]=d;}
        }
    }
    public static int left(int p){return (p<<1);}
    public static int right(int p){return (p<<1)+1;}

    public static  void build(int p,int L,int R){
        if(L==R){st[p]=L;}
        else{
            build(left(p), L, (L+R)/2);
            build(right(p),(L+R)/2+1,R);
            int p1 = st[left(p)], p2 = st[right(p)]; 
            st[p] = (lvl[p1] <= lvl[p2]) ? p1 : p2;
        }
    }
    public static int rmq(int p,int L, int R,int i, int j){
        if (R < i || L > j) return -1; 
        if (L >= i && R <= j) return st[p];

        int p1 = rmq(left(p) , L , (L+R) / 2, i, j);
        int p2 = rmq(right(p), (L+R) / 2 + 1, R , i, j);
        if(p1==-1){return p2;}
        if(p2==-1){return p1;}
        return (lvl[p1] <= lvl[p2]) ? p1 : p2;
    }
    public static int RMQ(int i,int j){
        return rmq(1,0,lpnt-1,i,j);
    }
    public static int LCA(int p,int q){
        int A,B,P,Q;
        P=index[p];Q=index[q];
        if(P>Q){A=Q;B=P;}else{A=P;B=Q;}
        return eul[RMQ(A,B)];
    }
    public static int dist(int A,int B){
        return depth[A]+depth[B]-2*depth[LCA(A,B)];
    }
         
    public static void main(String[] args) throws IOException{
        epnt=lpnt=0;
        Reader in = new Reader();
        n = in.nextInt();
        for (int i = 0; i <= n; i++) {
            adj[i]=new ArrayList<>();
        }
        for (int i = 0; i < n-1; i++) {
            a = in.nextInt();b = in.nextInt();
            adj[a].add(b);adj[b].add(a);
        }
        eulDFS(1, -1, 0);
        //System.out.println(lpnt);
        //for (int i = 0; i < epnt; i++) {System.out.print(eul[i]+" ");}System.out.println();for (int i = 0; i < lpnt; i++) { System.out.print(lvl[i]+" ");}
        build(1, 0, lpnt-1);
        //segment tree for RMQ on levels

        q=in.nextInt();
        int ab,ax,ay,bx,by;
        for (int i = 0; i < q; i++) {
            x = in.nextInt();y = in.nextInt();a = in.nextInt();b = in.nextInt();k=in.nextInt();
            ab=dist(a, b);ax=dist(a, x);ay=dist(a, y);bx=dist(b, x);by=dist(b, y);
            //System.out.println(ab+" "+ax+" "+by+" "+ay+" "+bx+" ");
            if(ab<=k && ab%2==k%2){System.out.println("YES");continue;}
            if((ax+1+by) <=k && (ax+1+by)%2==k%2){System.out.println("YES");continue;}
            if((bx+1+ay) <=k && (bx+1+ay)%2==k%2){System.out.println("YES");continue;}
            System.out.println("NO");
        }


    }

    static class Reader { 
        final private int BUFFER_SIZE = 1 << 16; 
        private DataInputStream din; 
        private byte[] buffer; 
        private int bufferPointer, bytesRead; 
  
        public Reader() 
        { 
            din = new DataInputStream(System.in); 
            buffer = new byte[BUFFER_SIZE]; 
            bufferPointer = bytesRead = 0; 
        } 
  
        public Reader(String file_name) throws IOException 
        { 
            din = new DataInputStream(new FileInputStream(file_name)); 
            buffer = new byte[BUFFER_SIZE]; 
            bufferPointer = bytesRead = 0; 
        } 
  
        public String readLine() throws IOException 
        { 
            byte[] buf = new byte[64]; // line length 
            int cnt = 0, c; 
            while ((c = read()) != -1) 
            { 
                if (c == '\n') 
                    break; 
                buf[cnt++] = (byte) c; 
            } 
            return new String(buf, 0, cnt); 
        } 
  
        public int nextInt() throws IOException 
        { 
            int ret = 0; 
            byte c = read(); 
            while (c <= ' ') 
                c = read(); 
            boolean neg = (c == '-'); 
            if (neg) 
                c = read(); 
            do
            { 
                ret = ret * 10 + c - '0'; 
            }  while ((c = read()) >= '0' && c <= '9'); 
  
            if (neg) 
                return -ret; 
            return ret; 
        } 
  
        public long nextLong() throws IOException 
        { 
            long ret = 0; 
            byte c = read(); 
            while (c <= ' ') 
                c = read(); 
            boolean neg = (c == '-'); 
            if (neg) 
                c = read(); 
            do { 
                ret = ret * 10 + c - '0'; 
            } 
            while ((c = read()) >= '0' && c <= '9'); 
            if (neg) 
                return -ret; 
            return ret; 
        } 
  
        public double nextDouble() throws IOException 
        { 
            double ret = 0, div = 1; 
            byte c = read(); 
            while (c <= ' ') 
                c = read(); 
            boolean neg = (c == '-'); 
            if (neg) 
                c = read(); 
  
            do { 
                ret = ret * 10 + c - '0'; 
            } 
            while ((c = read()) >= '0' && c <= '9'); 
  
            if (c == '.') 
            { 
                while ((c = read()) >= '0' && c <= '9') 
                { 
                    ret += (c - '0') / (div *= 10); 
                } 
            } 
  
            if (neg) 
                return -ret; 
            return ret; 
        } 
  
        private void fillBuffer() throws IOException 
        { 
            bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE); 
            if (bytesRead == -1) 
                buffer[0] = -1; 
        } 
  
        private byte read() throws IOException 
        { 
            if (bufferPointer == bytesRead) 
                fillBuffer(); 
            return buffer[bufferPointer++]; 
        } 
  
        public void close() throws IOException 
        { 
            if (din == null) 
                return; 
            din.close(); 
        }
    }
}


