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
#include <bits/stdc++.h>
using namespace std;
void ASS(bool b) {
  if (!b) {
    ++*(int*)0;
  }
}
struct P {
  int x, y;
  P() {}
  P(int xx, int yy) {
    x = xx;
    y = yy;
  }
  P rot() { return P(y, -x); }
  P operator-(P p) { return P(x - p.x, y - p.y); }
  void read() { cin >> x >> y; }
  bool eq(const P& p) const { return x == p.x && y == p.y; }
};
long long Dot(P a, P b) { return a.x * (long long)b.y - b.x * (long long)a.y; }
long long gcd(long long a, long long b) {
  if (a == 0 || b == 0) return a + b;
  a = max(a, -a);
  b = max(b, -b);
  while (a) {
    long long c = b % a;
    b = a;
    a = c;
  }
  return b;
}
bool Ok(P A, P B, P C) {
  if (A.eq(B)) return 1;
  P c0(C.x, C.y);
  P c1(C.y, -C.x);
  P c = B - A;
  long long d = Dot(c0, c1);
  if (d == 0) return 0;
  ASS(d != 0);
  long long L0 = Dot(c, c1);
  long long L1 = Dot(c0, c);
  return L0 % d == 0 && L1 % d == 0;
}
int main() {
  P a, b, c;
  a.read();
  b.read();
  c.read();
  for (int za = 0; za < (int)(4); za++) {
    for (int zb = 0; zb < (int)(4); zb++) {
      for (int zc = 0; zc < (int)(4); zc++) {
        if (Ok(a, b, c)) {
          cout << "YES" << endl;
          return 0;
        }
        c = c.rot();
      }
      b = b.rot();
    }
    a = a.rot();
  }
  cout << "NO" << endl;
  return 0;
}
