#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <stack>
#include <map>
#include <set>
#include <deque>
#include <cstring>
#include <functional>
#include <climits>
#include <list>
#include <ctime>
#include <complex>
 
#define F1(x,y,z) for(int x=y;x<z;x++)
#define F2(x,y,z) for(int x=y;x<=z;x++)
#define F3(x,y,z) for(int x=y;x>z;x--)
#define F4(x,y,z) for(int x=y;x>=z;x--)
#define pb push_back
#define LL long long
#define co complex<double>
 
#define MAX 500005
#define AMAX 16384
#define MOD 1000000007

#define f(c,d) ((1<<(c))*(d))

using namespace std;

int n,v[MAX],ia,ib,dx,i,ra[MAX],rb[MAX],qa;
pair<int,int> x[MAX],y[MAX];
vector<int> ltx,rbx; //x-coord of left-top/right-bottom line
bool ok=1;
pair<int,int> re,pt,ans; //-v,rbx[i]
priority_queue<int> z,zz;
bool ll[MAX],rr[MAX];
vector<pair<int,int> > seg[20];
vector<int> add[20];
int ansv=1;

pair<int,int> f1(int a,int b,int c,int d){
	//if(c==19)printf("%d %d %d %d\n",a,b,c,d);
	if(f(c,d)==a&&f(c,d+1)==b){
        //printf("A %d %d %d %d\n",a,b,c,d);
        //printf("%d %d\n",seg[c][d].first,add[c][d]);
		return seg[c][d];
	}
	c--;
	d=d*2+1;
	add[c][d-1]+=add[c+1][d/2];
	seg[c][d-1].first+=add[c+1][d/2];
	if(f(c,d)<=rbx.size()){		
		add[c][d]+=add[c+1][d/2];
		seg[c][d].first+=add[c+1][d/2];
	}
	add[c+1][d/2]=0;
	if(b<=f(c,d))return f1(a,b,c,d-1);
	if(a>=f(c,d))return f1(a,b,c,d);
	return min(f1(a,f(c,d),c,d-1),f1(f(c,d),b,c,d));
}

void f2(int a,int b,int c,int d,int e){	
	//if(c==19)printf("%d %d %d %d %d\n",a,b,c,d,e);
	//printf("%d %d\n",seg[c].size(),add[c].size());
	if(f(c,d)==a&&f(c,d+1)==b){
	//	printf("B %d %d %d %d %d\n",a,b,c,d,e);
	//	printf("%d %d\n",seg[c][d].first,add[c][d]);
		seg[c][d].first+=e;
		add[c][d]+=e;
		//printf("%d %d\n",seg[c][d].first,add[c][d]);
		return;
	}
	c--;
	d=d*2+1;
	add[c][d-1]+=add[c+1][d/2];
	seg[c][d-1].first+=add[c+1][d/2];
	if(f(c,d)<=rbx.size()){		
		add[c][d]+=add[c+1][d/2];
		seg[c][d].first+=add[c+1][d/2];
	}
	add[c+1][d/2]=0;
	if(b<=f(c,d))f2(a,b,c,d-1,e);
	else if(a>=f(c,d))f2(a,b,c,d,e);
	else{
		f2(a,f(c,d),c,d-1,e);
		f2(f(c,d),b,c,d,e);
	}
	seg[c+1][d/2]=seg[c][d-1];
	if(f(c,d)<=rbx.size())seg[c+1][d/2]=min(seg[c+1][d/2],seg[c][d]);
}

int main(){
	scanf("%d",&n);
	F2(a,1,n)scanf("%d",&v[a]);
	F2(a,1,n){
		if(v[a]!=a)ok=0;
		x[a]=make_pair(a,v[a]);
		y[a]=make_pair(v[a],a);
	}
	if(ok){
		printf("Cool Array\n");
		return 0;
	}
	//sort(x+1,x+n+1);
	sort(y+1,y+n+1);
	ltx.pb(1);
	F2(a,2,n)if(x[a].second>v[ltx.back()])ltx.pb(x[a].first);
	rbx.pb(y[1].second);
	F2(a,2,n)if(y[a].second>rbx.back())rbx.pb(y[a].second);
	//F1(a,0,ltx.size())printf("%d%c",ltx[a],a==ltx.size()-1?'\n':' ');
	//F1(a,0,rbx.size())printf("%d%c",rbx[a],a==rbx.size()-1?'\n':' ');
	F1(a,0,20)for(int b=0;f(a,b)<=rbx.size();b++){
		add[a].pb(0);
		seg[a].pb(make_pair(0,f(a,b)));
	}
	F1(a,0,ltx.size())ll[ltx[a]]=1;
	F1(a,0,rbx.size())rr[rbx[a]]=1;
	i=0;
	F2(a,1,n){
		if(rr[a])i++;
		else ra[a]=i;
	}
	i=0;	
	F2(a,1,n){
		if(rr[y[a].second])i++;
		else rb[y[a].second]=i;
	}
	//F2(a,1,n)printf("%d %d %d\n",a,ra[a],rb[a]);
	F2(a,1,n){
		if(ll[y[a].second]){
			//printf("ll %d %d %d\n",y[a].second,qa,ib);
			ia++;
			//query
            while(!z.empty()){
                if(-z.top()>y[a].second)break;
                f2(ra[-z.top()],rb[-z.top()],19,0,1);
                z.pop();
            }
            while(!zz.empty()){
                if(-zz.top()>y[a].second)break;
                qa++;
                zz.pop();
            }
		//	printf("ll %d %d %d\n",y[a].second,qa,ib);
			if(qa<ib){
			re=	f1(qa,ib,19,0);
				//if(re.first!=0){
					pt=make_pair(min(rbx[re.second],y[a].second),max(rbx[re.second],y[a].second));
			//	printf("ans %d %d %d\n",re.first,pt.first,pt.second);
					if(re.first<ansv)ans=pt,ansv=re.first;
					else if(re.first==ansv)ans=min(ans,pt);
				//}
			}
			//delete		
            /*
			if(ia!=ltx.size())while(dx!=ltx[ia]){
				if(!ll[dx]&&!rr[dx])if(ra[dx]<rb[dx])f2(ra[dx],rb[dx],19,0,1);
				if(rr[dx])qa++;
				dx++;
			}
            
            
            if(ia!=ltx.size()){
                while(!z.empty()){
                    if(-z.top()<ltx[ia]){
                        f2(ra[-z.top()],rb[-z.top()],19,0,1);
                        z.pop();
                    }else break;
                }
                while(qa!=rbx.size()&&rbx[qa]<ltx[ia])qa++;
            }
            */
		}
		if(rr[y[a].second]){
			//printf("rr %d\n",a);
            zz.push(-y[a].second);
			ib++;
			//nth
		}
		if(!ll[y[a].second]&&!rr[y[a].second]){
            if(ra[y[a].second]<rb[y[a].second]){
                f2(ra[y[a].second],rb[y[a].second],19,0,-1);
                z.push(-y[a].second);
            }
			//printf("");
		}
	}
	printf("%d %d\n",ans.first,ans.second);
	//system("pause");
	return 0;
}