//package com.kraken.cf.cf620;
/*
 * created by Kraken at 6:37 PM
 */

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

public class E {
	static int[] height, first, segTree;
	static boolean[] visited;
	static ArrayList<Integer> euler = new ArrayList<>();

	public static void main(String[] args) {
		FastReader sc = new FastReader();
		int n = sc.nextInt();

		height = new int[n];
		first = new int[n];
		visited = new boolean[n];
		for (int i = 0; i < n; i++) visited[i] = false;

		ArrayList<ArrayList<Integer>> tree = new ArrayList<>();
		for (int i = 0; i < n; i++) tree.add(new ArrayList<>());

		for (int i = 0; i < n - 1; i++) {
			int a = sc.nextInt() - 1;
			int b = sc.nextInt() - 1;
			tree.get(a).add(b);
			tree.get(b).add(a);
		}

		dfs(tree, 0, 0);
		int m = euler.size();
		segTree = new int[m * 4];
		build(1, 0, m - 1);

		StringBuilder sb = new StringBuilder();
		int q = sc.nextInt();
		for (int i = 0; i < q; i++) {
			int x = sc.nextInt() - 1, y = sc.nextInt() - 1, a = sc.nextInt() - 1, b = sc.nextInt() - 1, k = sc.nextInt();
			int ab = dist(a, b), ax = dist(a, x), ay = dist(a, y), bx = dist(b, x), by = dist(b, y);
			if (k >= ab && (ab & 1) == (k & 1))
				sb.append("YES").append("\n");
			else if (k >= (ax + by + 1) && ((ax + by + 1) & 1) == (k & 1))
				sb.append("YES").append("\n");
			else if (k >= (ay + bx + 1) && ((ay + bx + 1) & 1) == (k & 1))
				sb.append("YES").append("\n");
			else
				sb.append("NO").append("\n");
		}
		System.out.println(sb.toString());
	}

	private static int dist(int a, int b) {
//		System.out.printf("finding distance between: %d, %d\n", a, b);
		int ca = lca(a, b);
		return (height[a] - height[ca]) + (height[b] - height[ca]);
	}

	private static int lca(int a, int b) {
		int left = first[a], right = first[b];
		if (left > right) {
			int temp = right;
			right = left;
			left = temp;
		}
//		System.out.printf("finding lca in range[%d, %d]\n", left, right);
		return query(1, left, right, 0, euler.size() - 1);
	}

	private static int query(int node, int left, int right, int nLeft, int nRight) {
//		System.out.printf("query received for range: [%d, %d] in range of size: [%d, %d]\n", left, right, nLeft, nRight);
		if (left > right) return -1;
		if (left == nLeft && right == nRight) return segTree[node];
		int mid = (nLeft + nRight) >> 1;
		int l = query(node * 2, left, Math.min(mid, right), nLeft, mid);
		int r = query(node * 2 + 1, Math.max(mid + 1, left), right, mid + 1, nRight);
		if (l == -1) return r;
		if (r == -1) return l;
		if (height[l] < height[r]) return l; else return r;
	}

	private static void build(int node, int left, int right) {
//		System.out.printf("node: %d, left: %d, right: %d, val: %d\n", node, left, right, segTree[node]);
		if (left == right) {
			segTree[node] = euler.get(left);
		} else {
			int mid = (left + right) >> 1;
			build((node * 2), left, mid);
			build((node * 2) + 1, mid + 1, right);
			int l = segTree[(node * 2)], r = segTree[(node * 2) + 1];
			if (height[l] < height[r]) segTree[node] = l; else segTree[node] = r;
		}
//		System.out.printf("node: %d, left: %d, right: %d, val: %d\n", node, left, right, segTree[node]);
	}

	private static void dfs(ArrayList<ArrayList<Integer>> tree, int node, int h) {
		visited[node] = true;
		height[node] = h;
		first[node] = euler.size();
		euler.add(node);
//		System.out.printf("added to euler: %d\n", node);
		for (int i : tree.get(node)) {
			if (!visited[i]) {
				dfs(tree, i, h + 1);
				euler.add(node);
//				System.out.printf("added to euler: %d\n", i);
			}
		}
	}

	static class FastReader {

		BufferedReader br;

		StringTokenizer st;

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

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

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

		long nextLong() {
			return Long.parseLong(next());
		}

		double nextDouble() {
			return Double.parseDouble(next());
		}

		String nextLine() {
			String str = "";
			try {
				str = br.readLine();
			}
			catch (IOException e) {
				e.printStackTrace();
			}
			return str;
		}
	}
}
