#include <bits/stdc++.h>
using namespace std;
struct Point {
  int x, y;
  Point() {}
  Point(int _x, int _y) { x = _x, y = _y; }
  int norm2() { return x * x + y * y; }
  void read() { scanf("%d%d", &x, &y); }
};
Point operator-(const Point A, const Point B) {
  return Point(A.x - B.x, A.y - B.y);
}
Point operator+(const Point A, const Point B) {
  return Point(A.x + B.x, A.y + B.y);
}
int dot(Point A, Point B) { return A.x * B.x + A.y * B.y; }
int cross(Point A, Point B) { return A.x * B.y - B.x * A.y; }
Point P[3], T[3];
int D[3];
int dx[] = {0, 0, 1, -1};
int dy[] = {1, -1, 0, 0};
void doit() {
  int n = 0;
  for (int i = 0; i < 3; ++i)
    for (int j = i + 1; j < 3; ++j) D[n++] = (P[i] - P[j]).norm2();
  for (int i = 0; i < 3; ++i)
    for (int j = i + 1; j < 3; ++j)
      if (D[i] > D[j]) swap(D[i], D[j]);
  if (D[0] + D[1] == D[2]) {
    puts("RIGHT");
    return;
  }
  for (int i = 0; i < 3; ++i)
    for (int k = 0; k < 4; ++k) {
      Point Z[3];
      int m = 0;
      Z[m++] = P[i] + Point(dx[k], dy[k]);
      ;
      for (int j = 0; j < 3; ++j)
        if (i != j) Z[m++] = P[j];
      if (cross(Z[1] - Z[0], Z[2] - Z[0]) == 0) continue;
      for (int j = 0; j < 3; ++j)
        if (!dot(Z[(j + 2) % 3] - Z[j], Z[(j + 1) % 3] - Z[j])) {
          puts("ALMOST");
          return;
        }
    }
  puts("NEITHER");
}
int main() {
  while (scanf("%d%d", &P[0].x, &P[0].y) == 2) {
    for (int i = 1; i < 3; ++i) P[i].read();
    doit();
  }
}
