// GSKHIRTLADZE

#include<bits/stdc++.h>

#define tree int t,int l,int r
#define left 2*t,l,(l+r)/2
#define right 2*t+1,(l+r)/2+1,r
#define pb push_back

using namespace std;

int i,j,k,res,ans,ix,jx,a[524288],n;
vector < int > g,v,vec[1048576];
int ii,jj,mx;

void build(tree)
 {
  for (int i=l;i<=r;i++)
   vec[t].pb(a[i]);
   sort(vec[t].begin(),vec[t].end());
  if (l == r) return;
  build(left);
  build(right);
 }

int L,R,X,Y,l,r,stx,sty,m,st;

void get(tree)
 {
  if (r < L || R < l) return;
  if (L <= l && r <= R)
   {
    l=0;
    r=vec[t].size()-1;
    stx=vec[t].size();
    while (l <= r)
    {
     m=(l+r)/2;
     if (vec[t][m] < X) { l=m+1; } else { stx=m; r=m-1; }
    }

    l=0;
    r=vec[t].size()-1;
    sty=-1;
    while (l <= r)
    {
     m=(l+r)/2;
     if (vec[t][m] > Y) { r=m-1; } else { sty=m; l=m+1; }
    }
    if (stx <= sty) res+=sty-stx+1;
    return;
   }
  get(left);
  get(right);
 }

int main()
 {ix=jx=1;
  scanf("%d",&n);
  for (i=1;i<=n;i++)
   scanf("%d",&a[i]);
   build(1,1,n);
   for (i=1;i<=n;i++)
    {
     mx=max(mx,a[i]);
     if (a[i] == mx  ) g.pb(i);
    }

   for (i=n;i>=1;i--)
   {
    mx=min(mx,a[i]);
    if (a[i] == mx && ( i == 1 || a[i] < a[i-1])) v.pb(i);
   }
   reverse(v.begin(),v.end());
   ans=-1;
  for (ii=0;ii<g.size();ii++)
   {
     l=0; st=0; r=v.size()-1; m=0;
     while (l <= r)
      {
       m=(l+r)/2;
       if (v[m] <= g[ii]) { st=m+1; l=m+1; } else { st=m; r=m-1; }
      }
    for (jj=st;jj<v.size() && a[g[ii]] > a[v[jj]];jj++)

  { L=g[ii]; R=v[jj]; X=a[R]; Y=a[L];
    res=0; get(1,1,n);
    if (res > ans) { ans=res; ix=L; jx=R; }
  }
   }
  if (ix == jx) { cout<<"Cool Array"<<endl; } else
  cout<<ix<<" "<<jx<<endl;
 }