#include <bits/stdc++.h> #define LL long long #define PII pair<int,int> #define mp make_pair #define fi first #define se second using namespace std; int n,s[500005],p[500005],m=1; bool A[500005],B[500005]; int rt[500005],sto[500005][2]; int seg[1100000][2],rot[1100000]; int ql[500005],qr[500005]; int sa=0,sl=-1,sr=-1; void init(int id,int l,int r){ seg[id][0]=0; seg[id][1]=l; if(l==r) return; int m=(l+r)>>1; init(id*2,l,m); init(id*2+1,m+1,r); return; } void ror(int id,int l,int r){ if(rot[id] && l<r){ rot[id*2]+=rot[id]; rot[id*2+1]+=rot[id]; } seg[id][0]+=rot[id]; rot[id]=0; return; } void upd(int id,int l,int r,int L,int R,int de){ ror(id,l,r); if(l>R || L>r) return; if(L<=l && r<=R){ rot[id]+=de; ror(id,l,r); return; } int m=(l+r)>>1; upd(id*2,l,m,L,R,de); upd(id*2+1,m+1,r,L,R,de); if(seg[id*2][0]+rot[id*2] >= seg[id*2+1][0]+rot[id*2+1]){ seg[id][0]=seg[id*2][0]+rot[id*2]; seg[id][1]=seg[id*2][1]; }else{ seg[id][0]=seg[id*2+1][0]+rot[id*2+1]; seg[id][1]=seg[id*2+1][1]; } return; } PII query(int id,int l,int r,int L,int R){ ror(id,l,r); if(l>R || L>r) return mp(-1,-1); if(L<=l && r<=R) return mp(seg[id][0],seg[id][1]); int m=(l+r)>>1; PII cl=query(id*2,l,m,L,R),cr=query(id*2+1,m+1,r,L,R); if(cl.fi==cr.fi) return cl; else if(cl.fi<cr.fi) return cr; else return cl; } int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&s[i]),p[s[i]]=i; memset(A,0,sizeof(A)); memset(B,0,sizeof(B)); int m1=0; for(int i=1;i<=n;i++){ m1=max(m1,s[i]); if(m1==s[i]) A[i]=true; } m1=n+1; for(int i=n;i>=1;i--){ m1=min(m1,s[i]); if(m1==s[i]) B[i]=true; } for(int i=1;i<=n;i++){ rt[i]=m; if(B[i]) sto[m][0]=s[i],sto[m++][1]=i; } m--; init(1,1,m); memset(rot,0,sizeof(rot)); int cur=0; for(int i=1;i<=n;i++){ if(A[i]){ while(cur<s[i]){ cur++; int cp=rt[p[cur]]; int l=cp,r=m+1; while(r-l>1){ int mid=(l+r)>>1; if(sto[mid][0]>cur) r=mid; else l=mid; } ql[cur]=cp,qr[cur]=l; //printf("+%d: %d %d\n",cur,ql[cur],qr[cur]); upd(1,1,m,ql[cur],qr[cur],1); } PII res=query(1,1,m,rt[i],m); //printf("Q%d: %d %d; %d %d\n",i,rt[i],m,res.fi,res.se); if(res.fi>sa){ sa=res.fi; sl=i; sr=sto[res.se][1]; } } //printf("-%d: %d %d\n",s[i],ql[s[i]],qr[s[i]]); upd(1,1,m,ql[s[i]],qr[s[i]],-1); } if(sa<=1) printf("Cool Array\n"); else printf("%d %d\n",sl,sr); return 0; }