#include <iostream>
#include <cstdio>
#include <vector>
#include <set>
#include <queue>
#include <string.h>
#include <cstring>
#include <algorithm>
#include <cmath>
#include  <map>
#include <limits>
#include <stack>
#include <bits/stdc++.h>

using namespace std;

int tree1[500008];
int tree2[500008];
long long maxi=500008;
vector<int> v;
long long ans1=0,ans2=0,a;
void update(int idx,int val){
	while(idx<=maxi){
		tree1[idx]+=val;
		idx+=(idx&-idx);
	}
}
int pos(int idx){
	int sum=0;
	while(idx>0){
		sum+=tree1[idx];
		idx-=(idx&-idx);
	}
	return sum;
}
void update1(int idx,int val){
	while(idx<=maxi){
		tree2[idx]+=val;
		idx+=(idx&-idx);
	}
}
int pos1(int idx){
	int sum=0;
	while(idx>0){
		sum+=tree2[idx];
		idx-=(idx&-idx);
	}
	return sum;
}
int main(int argc, char const *argv[])
{
	long long n;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a;
		v.push_back(a);
	}
	long long maxt=0;
	for(int i=v.size()-1;i>=0;i--){
		if(pos(v[i])>=maxt){
			maxt=pos(v[i]);
			ans1=i+1;
			//cout<<ans1<<" "<<endl;;
		}
		//cout<<pos(v[i])<<" 1";
		update(v[i],1);
	}
	//cout<<endl;
	//cout<<maxt<<endl;
	int maxo=0;
	for(int i=0;i<v.size();i++){
		if(pos1(n)-pos1(v[i])>maxo){
			ans2=i+1;
			maxo=pos1(n)-pos1(v[i]);
			//cout<<ans2<<endl;
		}
		//cout<<pos1(n)-pos1(v[i]-1)<<" ";
		update1(v[i],1);
	}
	//cout<<maxt<<endl;
	if(maxo==0&&maxt==0){
		cout<<"Cool Array"<<endl;
	}
	else
	cout<<ans1<<" "<<ans2<<endl;
	return 0;
}