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.awt.*;
import java.awt.geom.*;
import java.io.*;
import java.math.*;
import java.text.*;
import java.util.*;
public class E {
	public static void main(String[] args) throws IOException	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int x1 = Integer.parseInt(st.nextToken());
		int y1 = Integer.parseInt(st.nextToken());
		st = new StringTokenizer(br.readLine());
		int x2 = Integer.parseInt(st.nextToken());
		int y2 = Integer.parseInt(st.nextToken());
		st = new StringTokenizer(br.readLine());
		int a = Integer.parseInt(st.nextToken());
		int b = Integer.parseInt(st.nextToken());
		if(a == 0 && b == 0)	{
			if(x1 == x2 && y1 == y2)	{
				System.out.println("YES");
				return;
			}
			if(x1 == y2 && y1 == -x2)	{
				System.out.println("YES");
				return;
			}
			if(x1 == -x2 && y1 == -y2)	{
				System.out.println("YES");
				return;
			}
			if(x1 == -y2 && y1 == x2)	{
				System.out.println("YES");
				return;
			}
			System.out.println("NO");
			return;
		}
		b = -b;
		int d = -b;
		int e = a;
		int c1 = x2-x1;
		int f1= y2-y1;
		if(pass(a,b,c1,d,e,f1))	{
			System.out.println("YES");
			return;
		}
		c1 = x2-y1;
		f1 = y2+x1;
		if(pass(a,b,c1,d,e,f1))	{
			System.out.println("YES");
			return;
		}
		c1 = x2+x1;
		f1 = y2+y1;
		if(pass(a,b,c1,d,e,f1))	{
			System.out.println("YES");
			return;
		}
		c1 = x2+y1;
		f1 = y2-x1;
		if(pass(a,b,c1,d,e,f1))	{
			System.out.println("YES");
			return;
		}
		System.out.println("NO");
	}
	public static boolean pass(long a, long b, long c, long d, long e, long f)	{
		long xNum = b*f-c*e;
		long yNum = a*f-c*d;
		long dem = a*e-b*d;
		return xNum%dem == 0 && yNum%dem == 0;
	}
	public static long sq(int x, int y)	{
		long xx = x;
		xx *= x;
		long yy = y;
		yy *= y;
		return xx+yy;
	}
	public static long[] extended(long p, long q) {
		if (q == 0)
			return new long[] { p, 1, 0 };
		long[] vals = extended(q, p % q);
		long d = vals[0];
		long a = vals[2];
		long b = vals[1] - (p / q) * vals[2];
		return new long[] { d, a, b };
	}
}
/*
46 -96 
28 42 
-36 -22
convert to
23 -48
14 21
-18 -11
*/