#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;
}