#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

const int MAXN = 4000 * 1000 + 100;
int rmq[MAXN];
int id[MAXN];
int ad[MAXN];

struct sob
{
	int tm, id;
};

int db[MAXN], dbc = 0;
int ub[MAXN], ubc = 0;
int dl[MAXN], dr[MAXN], ul[MAXN], ur[MAXN];
int a[MAXN];

bool cmp(sob s1, sob s2)
{
	if (s1.tm < s2.tm) return true;
	if (s1.tm > s2.tm) return false;
	return ((s1.id < 0) && (s2.id > 0));
}

int lv, rv, val;
sob sb[MAXN];
int sbc = 0;

void create_rmq(int v, int l, int r)
{
	rmq[v] = ad[v] = 0, id[v] = l;
	if (l != r)
	{
		create_rmq(v * 2 + 1, l, (l + r) / 2);
		create_rmq(v * 2 + 2, (l + r) / 2 + 1, r);
	}
}

void modify_rmq(int v, int l, int r)
{
	if ((lv <= l) && (r <= rv))
	{
		ad[v] += val;
		rmq[v] += val;
		return;
	}
	int md = (l + r) / 2;
	if (lv <= md) modify_rmq(v * 2 + 1, l, md);
	if (rv > md) modify_rmq(v * 2 + 2, md + 1, r);
	if (rmq[v * 2 + 1] >= rmq[v * 2 + 2]) rmq[v] = rmq[v * 2 + 1] + ad[v], id[v] = id[v * 2 + 1];
	else rmq[v] = rmq[v * 2 + 2] + ad[v], id[v] = id[v * 2 + 2];
}


int main()
{
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);
	int n;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
		a[i] = n - a[i];
		if ((dbc == 0) || (a[i] < a[db[dbc - 1]])) db[dbc++] = i;
	}
	for (int i = n - 1; i >= 0; i--)
	{
		if ((ubc == 0) || (a[i] > a[ub[ubc - 1]])) ub[ubc++] = i;
	}
	reverse(ub, ub + ubc);
	int ans = 1, al = -2, ar = -2;
	create_rmq(0, 0, ubc - 1);
	for (int i = 0; i < n; i++)
	{
		int lg = 0, rg = dbc;
		while (lg < rg)
		{
			int md = (lg + rg) / 2;
			if (a[db[md]] <= a[i]) rg = md;
			else lg = md + 1;
		}
		dl[i] = lg;
		lg = -1, rg = dbc - 1;
		while (lg < rg)
		{
			int md = (lg + rg + 1) / 2;
			if (db[md] <= i) lg = md;
			else rg = md - 1;
		}
		dr[i] = lg;
		lg = 0, rg = ubc;
		while (lg < rg)
		{
			int md = (lg + rg) / 2;
			if (ub[md] >= i) rg = md;
			else lg = md + 1;
		}
		ul[i] = lg;
		lg = -1, rg = ubc - 1;
		while (lg < rg)
		{
			int md = (lg + rg + 1) / 2;
			if (a[ub[md]] >= a[i]) lg = md;
			else rg = md - 1;
		}
		ur[i] = lg;
		if ((dl[i] <= dr[i]) && (ul[i] <= ur[i]))
		{
			sb[sbc].tm = dl[i];
			sb[sbc].id = i + 1;
			sbc++;
			sb[sbc].tm = dr[i] + 1;
			sb[sbc].id = -(i + 1);
			sbc++;
		}
	}
	sort(sb, sb + sbc, cmp);
	for (int i = 0; i < sbc; i++)
	{
		int v;
		if (sb[i].id > 0) v = sb[i].id - 1, val = 1;
		else v = -sb[i].id - 1, val = -1;
		lv = ul[v], rv = ur[v];
		modify_rmq(0, 0, ubc - 1);
		if (rmq[0] > ans) ans = rmq[0], al = db[sb[i].tm], ar = ub[id[0]];
	}
	if (al == -2)
	{
		printf("Cool Array\n");
		return 0;
	}
	cout << al + 1 << " " << ar + 1 << endl;
	return 0;
}