#include <bits/stdc++.h>

#define pii pair<int, int>

#define mp make_pair
#define pb push_back

#define f first
#define s second

using namespace std;

typedef long long ll;
typedef long double ld;

const int MAXN = (int) 7e6 + 7;
const int INF = (int) 1e9 + 7;

int n;
vector<int> a;

int ans = -1;

int ansL = -1;
int ansR = -1;

pii t[MAXN];
int d[MAXN];

void build(int v, int l, int r) {
  t[v] = mp(0, l);
  d[v] = 0;
  if (l == r) {
    return;
  }
  int m = (l + r) / 2;
  build(v * 2, l, m);
  build(v * 2 + 1, m + 1, r);
}

void push(int v) {
  if (d[v] != 0) {
    t[v].f += d[v];

    d[v * 2] += d[v];
    d[v * 2 + 1] += d[v];

    d[v] = 0;
  }
}

void add(int v, int l, int r, int l1, int r1, int val) {
  push(v);
  if (l == l1 && r == r1) {
    d[v] += val;
    push(v);
    return;
  }
  int m = (l + r) / 2;
  if (l1 <= m) {
    add(v * 2, l, m, l1, min(r1, m), val);
  } else {
    push(v * 2);
  }
  if (r1 > m) {
    add(v * 2 + 1, m + 1, r, max(l1, m + 1), r1, val);
  } else {
    push(v * 2 + 1);
  }
  if (t[v * 2].f > t[v * 2 + 1].f) t[v] = t[v * 2];
  else if (t[v * 2].f < t[v * 2 + 1].f) t[v] = t[v * 2 + 1];
  else {
    if (t[v * 2].s < t[v * 2 + 1].s) t[v] = t[v * 2];
    else t[v] = t[v * 2 + 1];
  }
}

int main() {
  #ifdef LOCAL
  freopen("in", "r", stdin);
  #endif

  scanf("%d", &n);

  a.resize(n);

  vector<int> pref(n);
  vector<int> suff(n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
    a[i]--;
  }
  for (int i = 0; i < n - 1; i++) {
    if (a[i] > a[i + 1]) {
      ans = 0;
      ansL = i + 1;
      ansR = i + 2;
    }
  }
  if (ans == -1) {
    puts("Cool Array");
    return 0;
  }
  vector<int> l, r, lv, rv;
  for (int i = 0; i < n; i++) {
    pref[i] = max(i == 0 ? 0 : pref[i - 1], a[i]);
  }
  for (int i = n - 1; i >= 0; i--) {
    suff[i] = min(i == n - 1 ? n : suff[i + 1], a[i]);
  }
  for (int i = 0; i < n; i++) {
    if (a[i] == pref[i]) {
      l.pb(i);
      lv.pb(a[i]);
    }
    if (a[i] == suff[i]) {
      r.pb(i);
      rv.pb(a[i]);
    }
  }
  vector<vector<pii>> st((int) l.size());
  vector<vector<pii>> en((int) l.size());
  for (int i = 0; i < n; i++) {
    //if (a[i] == pref[i] || a[i] == suff[i]) {
    //  continue;
    //}
    int r1 = lower_bound(r.begin(), r.end(), i) - r.begin();
    int r2 = lower_bound(rv.begin(), rv.end(), a[i]) - rv.begin() - 1;
    if (r1 > r2)
      continue;
    int l1 = lower_bound(lv.begin(), lv.end(), a[i]) - lv.begin();
    int l2 = lower_bound(l.begin(), l.end(), i) - l.begin() - 1;
    if (l1 > l2)
      continue;
    st[l1].pb(mp(r1, r2));
    en[l2].pb(mp(r1, r2));
  }
  int cnt = 0;
  build(1, 0, (int) r.size() - 1);
  for (int i = 0; i < l.size(); i++) {
    for (int j = 0; j < st[i].size(); j++) {
      cnt++;
      add(1, 0, (int) r.size() - 1, st[i][j].f, st[i][j].s, 1);
    }
    if (t[1].f > ans) {
      ans = t[1].f;
      ansL = l[i] + 1;
      ansR = r[t[1].s] + 1;
    } else if (t[1].f == ans && mp(ansL, ansR) > mp(l[i] + 1, r[t[1].s] + 1)) {
      ansL = l[i] + 1;
      ansR = r[t[1].s] + 1;
    }
    for (int j = 0; j < en[i].size(); j++) {
      cnt--;
      add(1, 0, (int) r.size() - 1, en[i][j].f, en[i][j].s, -1);
    }
  }
  cout << ansL << " " << ansR << endl;
  return 0;
}