#include <bits/stdc++.h>

#define mp make_pair
#define st first
#define nd second
#define pb push_back

using namespace std;

typedef long long ll;
typedef pair< ll,ll > pll;
typedef pair< int,int > pii;

const int N = 1000000, inf = 1000000000;

int n, a[N+5], lazy[4*N+5], premax[N+5], where[N+5], fen[N+5];
pair< int , int > seg[4*N+5];

pii update(int i, int l, int r, int x, int y, int t) {
	if (x > r || y < l)
		return seg[i];

	if (x <= l && y >= r) {
		lazy[i] += t;
		seg[i].st += t;
        return seg[i];
	}

	int mi = (l + r) / 2;

	seg[i] = max(update(2*i, l, mi, x, y, t), update(2*i+1, mi+1, r, x, y, t)); seg[i].st += lazy[i];
	return seg[i];
}

pii query(int i, int l, int r, int x, int y) {
	if (x > r || y < l)
		return mp(-inf, -inf);

	if (x <= l && y >= r)
		return seg[i];

	int mi = (l + r) / 2;

    pii t = max(query(2*i, l, mi, x, y), query(2*i+1, mi+1, r, x, y)); t.st += lazy[i];
    return t;
}

void upd(int x) {
	for (; x <= n; x += x & -x)
		fen[x]++;
}

ll que(int x) {
	ll ans = 0;
	for (; x; x -= x & -x)
		ans += fen[x];
	return ans;
}

pii init(int k, int l, int r) {
    if(l == r)
        return seg[k] = make_pair(0, l);
    int mi = (l + r) / 2;
    return seg[k] = max(init(k + k, l, mi), init(k + k + 1, mi + 1, r));
}

int main()
{
	scanf("%d", &n);

	for (int i = 1; i <= n; i++) {
		scanf("%d", a+i);
		premax[i] = max(premax[i-1], a[i]);
		where[a[i]] = i;
	}

	vector<int> va, vi;

	int last = n;
	pair< int , pair< int , int > > mx = mp(-1, mp(0, 0));
	ll inv = 0;

    init(1, 1, n);

	for (int i = n; i >= 1; i--) {
		inv += que(a[i]);
		upd(a[i]);

		if (a[i] == premax[i]) {
			for (; last > a[i]; last--) {
				update(1, 1, n, 1, vi.rend() - upper_bound(vi.rbegin(), vi.rend(), where[last]), -1);
			}
            pii temp = query(1, 1, n, va.rend() - upper_bound(va.rbegin(), va.rend(), a[i]) + 1, va.size());
            if(temp.st >= mx.st) {
                mx = mp(temp.st, mp(i, temp.nd-1));
            }
        }

		update(1, 1, n, 1, va.size(), 1);
		update(1, 1, n, 1, va.rend() - upper_bound(va.rbegin(), va.rend(), a[i]), -1);

		if (va.empty() || va.back() > a[i]) {
			va.pb(a[i]);
			vi.pb(i);
		}
	}
	if (inv == 0)
		puts("Cool Array\n");
	else {
		printf("%d %d\n", mx.nd.st, vi[mx.nd.nd]);
    }
	return 0;
}