Problem: Arpa is taking a geometry exam. Here is the last problem of the exam.

You are given three points a, b, c.

Find a point and an angle such that if we rotate the page around the point by the angle, the new position of a is the same as the old position of b, and the new position of b is the same as the old position of c.

Arpa is doubting if the problem has a solution or not (i.e. if there exists a point and an angle satisfying the condition). Help Arpa determine if the question has a solution or not.

Input

The only line contains six integers ax, ay, bx, by, cx, cy (|ax|, |ay|, |bx|, |by|, |cx|, |cy| ≤ 109). It's guaranteed that the points are distinct.

Output

Print "Yes" if the problem has a solution, "No" otherwise.

You can print each letter in any case (upper or lower).

Examples

Input

0 1 1 1 1 0


Output

Yes


Input

1 1 0 0 1000 1000


Output

No

Note

In the first sample test, rotate the page around (0.5, 0.5) by <image>.

In the second sample test, you can't find any solution.

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
const long double EPS = 1e-12;
struct dot {
  long double x, y;
  long long ind;
};
bool operator<(dot a, dot b) { return a.ind < b.ind; }
long double len(dot a, dot b) {
  return sqrtl((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y));
}
bool eq(long double a, long double b) { return a - EPS <= b && a + EPS >= b; }
int main() {
  vector<dot> dots(3);
  for (long long i = 0; i < 3; i++) {
    cin >> dots[i].x >> dots[i].y;
    dots[i].ind = i;
  }
  bool flag = 0;
  long double k1 = (dots[0].y - dots[2].y) / (dots[0].x - dots[2].x), b1;
  b1 = dots[0].y - k1 * dots[0].x;
  if (eq(len(dots[0], dots[1]), len(dots[2], dots[1])) &&
      !eq(len(dots[0], dots[2]),
          len(dots[0], dots[1]) + len(dots[1], dots[2]))) {
    flag = 1;
  }
  if (flag) {
    cout << "Yes";
  } else {
    cout << "No";
  }
  cin >> dots[0].x;
  return 0;
}