#include<cstdio> #include<algorithm> #include<vector> #include<set> #include<map> #include<queue> #include<cmath> #include<iostream> #include<string> using namespace std; #define F first #define S second #define MP make_pair #define PB push_back #define LL long long #define PII pair<int, int> #define PLL pair<LL, LL> const int M=1024*512; struct node { int ind, re, ad; }; int n, r=-1, a, b; node D[2*M]; vector<PII> X, V; int T[M]; bool B[M]; void ad(int v, int vp, int vk, int p, int k, int w) { if(vp>k || vk<p) return; if(vp>=p && vk<=k) { D[v].ad+=w; return; } D[2*v].ad+=D[v].ad; D[2*v+1].ad+=D[v].ad; D[v].ad=0; int mid=(vp+vk)/2; ad(2*v, vp, mid, p, k, w); ad(2*v+1, mid+1, vk, p, k, w); D[v].re=D[2*v+1].re+D[2*v+1].ad; D[v].ind=D[2*v+1].ind; if(D[2*v].re+D[2*v].ad>=D[v].re) { D[v].re=D[2*v].re+D[2*v].ad; D[v].ind=D[2*v].ind; } } void add(int x, int y, int w) { int p=0, k=(int)V.size()-1, mid=(p+k)/2, st=n+1, en=-1; while(p<=k) { if(V[mid].F>=x) { k=mid-1; st=min(st, mid); } else p=mid+1; mid=(p+k)/2; } p=0; k=(int)V.size()-1; mid=(p+k)/2; while(p<=k) { if(V[mid].S<=y) { p=mid+1; en=max(en, mid); } else k=mid-1; mid=(p+k)/2; } //printf("lol %d %d %d; %d %d\n", w, x, y, st, en); if(st>en) return; ad(1, 0, M-1, st, en, w); } int main() { //ios_base::sync_with_stdio(0); scanf("%d", &n); int maxi=0; for(int i=1; i<=n; i++) { int qwe; scanf("%d", &qwe); X.PB(MP(qwe, i)); T[i]=qwe; if(maxi<qwe) { maxi=qwe; B[i]=1; //printf("%d\n", i); } } sort(X.begin(), X.end()); int mini=1000000; for(int i=n; i>0; i--) { if(T[i]<mini) { mini=T[i]; V.PB(MP(i, T[i])); } } //for(int i=0; i<(int)X.size(); i++) // printf("%d %d\n", X[i].F, X[i].S); for(int i=0; 2*i<(int)V.size(); i++) swap(V[i], V[V.size()-i-1]); for(int i=0; i<(int)V.size(); i++) D[M+i].ind=V[i].F; for(int i=M-1; i>0; i--) D[i]=D[2*i]; int ind=0; for(int i=1; i<=n; i++) { if(B[i]) { while(ind<(int)X.size() && X[ind].F<=T[i]) { add(X[ind].S, X[ind].F, 1); ind++; } if(D[1].ad+D[1].re>r) { r=D[1].ad+D[1].re; a=i; b=D[1].ind; } } add(i, T[i], -1); } //printf("%d\n", r); if(r<2) printf("Cool Array\n"); else printf("%d %d\n", a, b); return 0; }