#include <bits/stdc++.h>
const int max_N = 250005;
const int max_E = 505;
int n;
bool A[max_E][max_E], B[max_E][max_E], vis[max_E][max_E];
int read() {
  char c = getchar();
  int ans = 0;
  bool flag = true;
  while (!isdigit(c)) flag &= (c != '-'), c = getchar();
  while (isdigit(c)) ans = ans * 10 + c - '0', c = getchar();
  return flag ? ans : -ans;
}
void Write(int x) {
  if (x < 10)
    putchar(x + '0');
  else
    Write(x / 10), putchar(x % 10 + '0');
}
bool bound(int x, int y) { return x >= 0 && x < 500 && y >= 0 && y < 500; }
int count_A(int x, int y) {
  int ans = 0;
  if (bound(x - 1, y)) ans += A[x - 1][y];
  if (bound(x + 1, y)) ans += A[x + 1][y];
  if ((x & 1) && bound(x - 1, y + 1)) ans += A[x - 1][y + 1];
  if (!(x & 1) && bound(x + 1, y - 1)) ans += A[x + 1][y - 1];
  return ans;
}
int count_B(int x, int y) {
  int ans = 0;
  if (bound(x - 1, y)) ans += B[x - 1][y];
  if (bound(x + 1, y)) ans += B[x + 1][y];
  if ((x & 1) && bound(x - 1, y + 1)) ans += B[x - 1][y + 1];
  if (!(x & 1) && bound(x + 1, y - 1)) ans += B[x + 1][y - 1];
  return ans;
}
bool dfs(int x, int y, int fx, int fy) {
  vis[x][y] = true;
  if (bound(x - 1, y) && B[x - 1][y] && (x - 1 != fx || y != fy)) {
    if (vis[x - 1][y] || !dfs(x - 1, y, x, y)) return false;
  }
  if (bound(x + 1, y) && B[x + 1][y] && (x + 1 != fx || y != fy)) {
    if (vis[x + 1][y] || !dfs(x + 1, y, x, y)) return false;
  }
  if ((x & 1) && bound(x - 1, y + 1) && B[x - 1][y + 1] &&
      (x - 1 != fx || y + 1 != fy)) {
    if (vis[x - 1][y + 1] || !dfs(x - 1, y + 1, x, y)) return false;
  }
  if (!(x & 1) && bound(x + 1, y - 1) && B[x + 1][y - 1] &&
      (x + 1 != fx || y - 1 != fy)) {
    if (vis[x + 1][y - 1] || !dfs(x + 1, y - 1, x, y)) return false;
  }
  return true;
}
bool check() {
  std::queue<std::pair<int, int> > Q;
  for (int i = 0; i < 500; i++)
    for (int j = 0; j < 500; j++)
      if (A[i][j]) Q.push(std::make_pair(i, j)), B[i][j] = true;
  while (!Q.empty()) {
    std::pair<int, int> cur = Q.front();
    Q.pop();
    if (bound(cur.first - 1, cur.second) && !B[cur.first - 1][cur.second] &&
        count_B(cur.first - 1, cur.second) > 1)
      Q.push(std::make_pair(cur.first - 1, cur.second)),
          B[cur.first - 1][cur.second] = true;
    if (bound(cur.first + 1, cur.second) && !B[cur.first + 1][cur.second] &&
        count_B(cur.first + 1, cur.second) > 1)
      Q.push(std::make_pair(cur.first + 1, cur.second)),
          B[cur.first + 1][cur.second] = true;
    if ((cur.first & 1) && bound(cur.first - 1, cur.second + 1) &&
        !B[cur.first - 1][cur.second + 1] &&
        count_B(cur.first - 1, cur.second + 1) > 1)
      Q.push(std::make_pair(cur.first - 1, cur.second + 1)),
          B[cur.first - 1][cur.second + 1] = true;
    if (!(cur.first & 1) && bound(cur.first + 1, cur.second - 1) &&
        !B[cur.first + 1][cur.second - 1] &&
        count_B(cur.first + 1, cur.second - 1) > 1)
      Q.push(std::make_pair(cur.first + 1, cur.second - 1)),
          B[cur.first + 1][cur.second - 1] = true;
  }
  for (int i = 0; i < 500; i++)
    for (int j = 0; j < 500; j++)
      if (!vis[i][j] && B[i][j] && !dfs(i, j, -1, -1)) return false;
  return true;
}
void cover_B(int x, int y) {
  if (!B[x][y]) return;
  B[x][y] = false;
  if (bound(x - 1, y)) cover_B(x - 1, y);
  if (bound(x + 1, y)) cover_B(x + 1, y);
  if ((x & 1) && bound(x - 1, y + 1)) cover_B(x - 1, y + 1);
  if (!(x & 1) && bound(x + 1, y - 1)) cover_B(x + 1, y - 1);
}
void Clear() {
  n = 0;
  memset(A, 0, sizeof(A)), memset(B, 0, sizeof(B)), memset(vis, 0, sizeof(vis));
}
int main() {
  n = read();
  for (int i = 1, x, y; i <= n; i++) x = read(), y = read(), A[x][y] = true;
  if (!check()) return puts("SICK"), 0;
  puts("RECOVERED");
  int ans = 0;
  for (int i = 0; i < 500; i++)
    for (int j = 0; j < 500; j++) {
      if (!A[i][j]) continue;
      if (!bound(i - 1, j) || !A[i - 1][j]) ans++;
      if (!bound(i + 1, j) || !A[i + 1][j]) ans++;
      if ((i & 1) && (!bound(i - 1, j + 1) || !A[i - 1][j + 1])) ans++;
      if (!(i & 1) && (!bound(i + 1, j - 1) || !A[i + 1][j - 1])) ans++;
    }
  for (int i = 0; i < 500; i++)
    for (int j = 0; j < 500; j++) {
      if (A[i][j] || !B[i][j] || count_A(i, j) != 3) continue;
      if (count_B(i - 1, j) != 1) continue;
      if (count_B(i + 1, j) != 1) continue;
      if ((i & 1) && count_B(i - 1, j + 1) != 1) continue;
      if (!(i & 1) && count_B(i + 1, j - 1) != 1) continue;
      ans -= 4, cover_B(i, j);
    }
  for (int i = 0; i < 500; i++)
    for (int j = 0; j < 500; j++)
      if (B[i][j]) ans -= 2, cover_B(i, j);
  return Write(ans), putchar('\n'), 0;
}
