#include <bits/stdc++.h>
using namespace std;
const int MAXN = 510;
const vector<pair<int, int>> d[2] = {{{1, 0}, {-1, 0}, {1, -1}},
                                     {{1, 0}, {-1, 0}, {-1, 1}}};
bool x[MAXN][MAXN], y[MAXN][MAXN];
int countx(int a, int b) {
  int cnt = 0;
  for (auto [p, q] : d[a & 1]) {
    cnt += x[a + p][b + q];
  }
  return cnt;
}
int county(int a, int b) {
  int cnt = 0;
  for (auto [p, q] : d[a & 1]) {
    cnt += y[a + p][b + q];
  }
  return cnt;
}
int diff(int a, int b) {
  if (y[a][b]) return 3 - county(a, b);
  return county(a, b);
}
bool check_triangle(int a, int b) {
  if (y[a][b]) return false;
  if (county(a, b) != 3) return false;
  for (auto [p, q] : d[a & 1]) {
    if (county(a + p, b + q) != 0) return false;
    for (auto [r, s] : d[(a + p) & 1]) {
      if (a + p + r == a && b + q + s == b) continue;
      if (county(a + p + r, b + q + s) != 1) return false;
    }
  }
  return true;
}
void fill() {
  queue<pair<int, int>> q;
  for (int i = 0; i < MAXN; ++i) {
    for (int j = 0; j < MAXN; ++j) {
      x[i][j] = y[i][j];
      if (x[i][j]) q.push(make_pair(i, j));
    }
  }
  while (!q.empty()) {
    auto [a, b] = q.front();
    q.pop();
    for (auto [r, s] : d[a & 1]) {
      if (!x[a + r][b + s] && countx(a + r, b + s) >= 2) {
        x[a + r][b + s] = true;
        q.push(make_pair(a + r, b + s));
      }
    }
  }
}
bool has_circle() {
  queue<pair<int, int>> q;
  for (int i = 0; i < MAXN; ++i) {
    for (int j = 0; j < MAXN; ++j) {
      if (x[i][j] && countx(i, j) < 2) {
        x[i][j] = false;
        q.push(make_pair(i, j));
      }
    }
  }
  while (!q.empty()) {
    auto [a, b] = q.front();
    q.pop();
    for (auto [r, s] : d[a & 1]) {
      if (x[a + r][b + s] && countx(a + r, b + s) < 2) {
        x[a + r][b + s] = false;
        q.push(make_pair(a + r, b + s));
      }
    }
  }
  for (int i = 0; i < MAXN; ++i) {
    for (int j = 0; j < MAXN; ++j) {
      if (!x[i][j]) continue;
      return true;
    }
  }
  return false;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n;
  cin >> n;
  for (int i = 0; i < n; ++i) {
    int a, b;
    cin >> a >> b;
    a += 4;
    b += 2;
    y[a][b] = true;
  }
  fill();
  if (has_circle()) {
    cout << "SICK" << endl;
    return 0;
  }
  fill();
  int ans = 0;
  for (int i = 2; i < MAXN - 2; ++i) {
    for (int j = 1; j < MAXN - 2; ++j) ans += diff(i, j);
  }
  ans /= 2;
  for (int i = 0; i < MAXN; ++i) {
    for (int j = 0; j < MAXN; ++j) {
      if (!x[i][j]) continue;
      ans -= 2;
      queue<pair<int, int>> q;
      q.push(make_pair(i, j));
      x[i][j] = false;
      int cnt = 0;
      vector<pair<int, int>> ss;
      while (!q.empty()) {
        ss.push_back(q.front());
        auto [a, b] = q.front();
        q.pop();
        cnt += y[a][b];
        for (auto [r, s] : d[a & 1]) {
          if (x[a + r][b + s]) {
            x[a + r][b + s] = false;
            q.push(make_pair(a + r, b + s));
          }
        }
      }
      if (cnt == 3) {
        for (auto [a, b] : ss) {
          if (check_triangle(a, b)) {
            ans -= 2;
            break;
          }
        }
      }
    }
  }
  cout << "RECOVERED" << endl;
  cout << ans << endl;
  return 0;
}
