#include <bits/stdc++.h>
using namespace std;
struct Nodes {
  int x, y;
} A, B, C, p[2][4];
void work(Nodes p1, int id) {
  int i, j;
  int k = 0;
  p[id][0] = p1;
  p[id][1].x = -p1.x;
  p[id][1].y = -p1.y;
  p[id][2].x = -p1.y;
  p[id][2].y = p1.x;
  p[id][3].x = p1.y;
  p[id][3].y = -p1.x;
}
int gcd(int x, int y) {
  if (y == 0) return x;
  return gcd(y, x % y);
}
int check(int a[], int now) {
  int d = a[0];
  int i;
  for (i = 1; i < 4; i++) {
    d = gcd(d, a[i]);
  }
  if (d == 0) {
    if (now != 0) return 0;
    return 1;
  }
  if (now % d == 0) return 1;
  return 0;
}
int main() {
  int i, j, k;
  long long a[2][2];
  while (scanf("%d%d", &A.x, &A.y) != EOF) {
    scanf("%d%d", &B.x, &B.y);
    scanf("%d%d", &C.x, &C.y);
    work(A, 0);
    work(C, 1);
    a[0][0] = p[1][0].x;
    a[0][1] = p[1][2].x;
    a[1][0] = p[1][0].y;
    a[1][1] = p[1][2].y;
    for (i = 0; i < 4; i++) {
      long long c1 = B.x - p[0][i].x;
      long long c2 = B.y - p[0][i].y;
      long long aa, bb, cc;
      cc = a[0][0] * a[1][1] - a[0][1] * a[1][0];
      aa = c1 * a[1][1] - a[0][1] * c2;
      bb = a[0][0] * c2 - a[1][0] * c1;
      if (cc == 0) {
        if (aa != 0 || bb != 0) continue;
        int d = gcd(a[0][0], a[0][1]);
        if (d == 0) {
          if (c1 != 0) continue;
        } else {
          if (c1 % d != 0) continue;
        }
        d = gcd(a[1][0], a[1][1]);
        if (d == 0) {
          if (c2 != 0)
            continue;
          else
            break;
        } else {
          if (c2 % d != 0)
            continue;
          else
            break;
        }
      } else if (aa % cc != 0 || bb % cc != 0)
        continue;
      break;
    }
    if (i < 4)
      printf("YES\n");
    else
      printf("NO\n");
  }
  return 0;
}
