At a geometry lesson Gerald was given a task: to get vector B out of vector A. Besides, the teacher permitted him to perform the following operations with vector А:

  * Turn the vector by 90 degrees clockwise.
  * Add to the vector a certain vector C.



Operations could be performed in any order any number of times.

Can Gerald cope with the task?

Input

The first line contains integers x1 и y1 — the coordinates of the vector A ( - 108 ≤ x1, y1 ≤ 108). The second and the third line contain in the similar manner vectors B and C (their coordinates are integers; their absolute value does not exceed 108).

Output

Print "YES" (without the quotes) if it is possible to get vector B using the given operations. Otherwise print "NO" (without the quotes).

Examples

Input

0 0
1 1
0 1


Output

YES


Input

0 0
1 1
1 1


Output

YES


Input

0 0
1 1
2 2


Output

NO
import java.io.*;
import java.util.*;
public class b {
public static void main(String[] args) throws IOException {
	input.init(System.in);
	PrintWriter out = new PrintWriter(System.out);
	long x1 = input.nextInt(), y1 =input.nextInt(), x2 = input.nextInt(), y2 = input.nextInt();
	long x3 = input.nextInt(), y3 = input.nextInt();
	long gcd = gcd(Math.abs(x3), Math.abs(y3));
	long[][] poss = new long[][]
			{
		{x2 - x1, y2 - y1},
		{x2+x1, y2+y1},
		{x2 - y1, y2+x1},
		{x2 + y1, y2 - x1}
			};
	long[][] cs = new long[][]{
			{x3, y3},
			{-x3, -y3},
			{y3, -x3},
			{-y3, x3}
	};
	boolean found = false;
	for(int i = 0; i<4; i++)
	{
		long makeX = poss[i][0], makeY = poss[i][1];
		if(gcd == 0)
		{
			if(makeX == 0 && makeY == 0) found = true;
			continue;
		}
		if(makeX%gcd != 0 || makeY%gcd != 0) continue;
		long first = makeX * x3 + makeY * y3;
		long second = makeX * -y3 + makeY * x3;
		//out.println(makeX+" "+makeY+" "+x3+" "+y3+" "+first+" "+second);
		if(first% (x3*x3 + y3*y3) == 0 || second%(x3*x3+y3*y3) == 0) found = true;
	}
	out.println(found ? "YES" : "NO");
	out.close();
}
static long gcd(long a, long b)
{
	return b == 0 ? a : gcd(b, a%b);
}
public static class input {
	static BufferedReader reader;
	static StringTokenizer tokenizer;

	static void init(InputStream input) {
		reader = new BufferedReader(new InputStreamReader(input));
		tokenizer = new StringTokenizer("");
	}

	static String next() throws IOException {
		while (!tokenizer.hasMoreTokens())
			tokenizer = new StringTokenizer(reader.readLine());
		return tokenizer.nextToken();
	}

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

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

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

