import java.io.*;
import java.util.*;
import java.lang.*;
import java.math.*;
public class Main extends Thread  {
    boolean[] prime;
    FastScanner sc;
    PrintWriter pw;
    long startTime = System.currentTimeMillis();
    final class FastScanner {
        BufferedReader br;
        StringTokenizer st;
 
        public FastScanner() {
            try {
                br = new BufferedReader(new InputStreamReader(System.in));
                st = new StringTokenizer(br.readLine());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
 
        public long nlo() {
            return Long.parseLong(next());
        }
 
        public String next() {
            if (st.hasMoreTokens()) return st.nextToken();
            try {
                st = new StringTokenizer(br.readLine());
            } catch (Exception e) {
                e.printStackTrace();
            }
            return st.nextToken();
        }
 
        public int ni() {
            return Integer.parseInt(next());
        }
 
        public String nli() {
            String line = "";
            if (st.hasMoreTokens()) line = st.nextToken();
            else try {
                return br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            while (st.hasMoreTokens()) line += " " + st.nextToken();
            return line;
        }
 
        public double nd() {
            return Double.parseDouble(next());
        }
    }
    public Main(ThreadGroup t,Runnable r,String s,long d )
    {
        super(t,r,s,d);
    }
    public void run()
    {
        sc=new FastScanner();
        pw=new PrintWriter(System.out);
        solve();
        pw.flush();
        pw.close();
    }
    public static void main(String[] args)
    {
        new Main(null,null,"",1<<26).start();
    }
 
 
    /////////////------------------------------------//////////////
    ////////////------------------Main-Logic--------//////////////
    ///////////-------------------------------------//////////////
    public static int[][] stmp;
    public static int[] hgt;
    public static int[][] prr;
    public static int[] visit;
    public static int timer;
    public static HashSet<Integer>[] adj;
    public void solve() {
       int n=sc.ni();
       hgt=new int[n];
        stmp=new int[n][2];
        adj=new HashSet[n];
        visit=new int[n];
        timer=1;
        for(int i=0;i<n;i++)
        adj[i]=new HashSet();
        prr=new int[n][32];
        for(int i=0;i<n-1;i++)
        {
            int x=sc.ni()-1;
            int y=sc.ni()-1;
            adj[x].add(y);
            adj[y].add(x);
        }
        dfs(0,-1,0);
        int m=sc.ni();
        while(m-->0)
        {
            int res=-1;
            int x=sc.ni()-1;
            int y=sc.ni()-1;
            int a=sc.ni()-1;
            int b=sc.ni()-1;
            int k=sc.ni();
            if(x==y&&x==a&&x==b)
            res=0;
            int p=lca(a,b);
            //pw.println(p+" "+a+" "+b);
            int z=k-(Math.abs(hgt[a]-hgt[p])+Math.abs(hgt[b]-hgt[p]));
            if((z>=0)&&(z%2==0))
            res=0;
            p=lca(b,x);
            //pw.println(p+" "+x+" "+b);
            int q=lca(a,y);
            //pw.println(q+" "+a+" "+y);
            z=k-(hgt[b]-2*hgt[p]+hgt[x]+1+hgt[a]-2*hgt[q]+hgt[y]);
            if((z>=0)&&(z%2==0))
            res=0;
            p=lca(a,x);
            //pw.println(p+" "+a+" "+x);
            q=lca(b,y);
            //pw.println(q+" "+b+" "+y);
            z=k-(hgt[b]-2*hgt[p]+hgt[x]+1+hgt[a]-2*hgt[q]+hgt[y]);
            if((z>=0)&&(z%2==0))
            res=0;
            if(res==0)
            pw.println("YES");
            else
            pw.println("NO");
        }
    }
     public static void dfs(int x,int z,int h)
    {
        visit[x]=1;
        hgt[x]=h;
        stmp[x][0]=timer++;
        prr[x][0]=z;
        for(int i=1;i<32;i++)
        {
            if(prr[x][i-1]==-1)
            prr[x][i]=-1;
            else
            prr[x][i]=prr[prr[x][i-1]][i-1];
        }
        for(int y:adj[x])
        {
            if(visit[y]==0)
            dfs(y,x,h+1);
        }
        stmp[x][1]=timer++;
    }
    public static int lca(int x,int y)
    {
        if(x==y)
        return x;
        if(is(x,y))
        return x;
        if(is(y,x))
        return y;
        for(int i=31;i>=0;i--)
        {
            if(prr[x][i]==-1)
            continue;
            if(!is(prr[x][i],y))
            x=prr[x][i];
        }
        return prr[x][0];
    }
    public static boolean is(int x,int y)
    {
        if((stmp[x][0]<stmp[y][0])&&(stmp[x][1]>stmp[y][1]))
        return true;
        else
        return false;
    }
}











