#include <bits/stdc++.h> using namespace std; typedef pair<int, int> PII; const int MAXN = 500000 + 10; int f[MAXN], g[MAXN]; int a[MAXN], n; struct Node { PII mx; int add; void set(int v) { add += v; mx.first += v; } } T[MAXN << 2]; #define lson (rt<<1) #define rson (rt<<1|1) #define mid ((l+r)>>1) void build(int rt, int l, int r) { T[rt].mx = PII(0, -n); T[rt].add = 0; if (l + 1 == r) return; build(lson, l, mid); build(rson, mid, r); } void upd(int rt) { T[rt].mx = max(T[lson].mx, T[rson].mx); } void psd(int rt) { if (T[rt].add) { T[lson].set(T[rt].add); T[rson].set(T[rt].add); T[rt].add = 0; } } void ins(int rt, int l, int r, int L, int R, int v) { if (L <= l && R >= r) { T[rt].set(v); return; } psd(rt); if (L < mid) ins(lson, l, mid, L, R, v); if (R > mid) ins(rson, mid, r, L, R, v); upd(rt); } void active(int rt, int l, int r, int x, int p) { if (l + 1 == r) { assert(T[rt].mx.first == 0); T[rt].mx.second = -p; return; } psd(rt); if (x < mid) active(lson, l, mid, x, p); else active(rson, mid, r, x, p); upd(rt); } PII ask(int rt, int l, int r, int L, int R) { if (L >= R) return PII(0, -n); if (L <= l && R >= r) return T[rt].mx; PII ret(0, -n); psd(rt); if (L < mid) ret = max(ret, ask(lson, l, mid, L, R)); if (R > mid) ret = max(ret, ask(rson, mid, r, L, R)); return ret; } int main() { scanf("%d", &n); for (int i = 0; i < n; ++ i) { scanf("%d", a + i); a[i] --; f[i] = g[i] = 0; } for (int i = 0; i < n; ++ i) { if (i == 0) f[i] = a[i]; else f[i] = max(a[i], f[i - 1]); } for (int i = n - 1; i >= 0; -- i) { if (i == n - 1) g[i] = a[i]; else g[i] = min(a[i], g[i + 1]); } build(1, 0, n); PII ret(n, n); int mx(-1); set<PII> S; for (int i = 0; i < n; ++ i) { if (f[i] == a[i]) active(1, 0, n, f[i], i); else if (g[i] == a[i]) { while (!S.empty() && S.begin()->first < a[i]) { int j = S.begin()->second; S.erase(S.begin()); ins(1, 0, n, a[j] + 1, f[j] + 1, -1); } PII nw = ask(1, 0, n, a[i] + 1, n); nw.second = -nw.second; if (nw.second == n) continue; if (nw.first > mx || (nw.first == mx && PII(nw.second, i) < ret)) { mx = nw.first; ret = PII(nw.second, i); } } else { ins(1, 0, n, a[i] + 1, f[i] + 1, 1); S.insert(PII(a[i], i)); } } if (mx == -1) puts("Cool Array"); else printf("%d %d\n", ret.first + 1, ret.second + 1); return 0; }