#include<bits/stdc++.h> #define rep(i,n) for( int (i)=0;(i)<(int)(n);(i)++) #define sz(v) (int)((v).size()) #define FOR(i,k,n) for(int i=(k);i<(int)(n);i++) #define VI vector<int> #define VS vector <string> #define SORT(c) sort((c).begin(),(c).end()) #define pb push_back #define gc getchar_unlocked #define Q queue<int> #define s(n) scanf("%d",&n) #define sll(n) scanf("%lld",&n) #define p(n) printf("%d",n) #define pll(n) printf("%lld",n) #define mem(s,v) memset(s,v,sizeof s) #define pp pair<int,int> #define pp1 pair<int,pair<int,int> > #define INF 999999 #define VP vector<pp> #define QP queue<pp> #define endl '\n' typedef long long ll; using namespace std; #define N 500009 int ar[N]; int n; int rlval; ll bitval[N]; ll query(int x){ ll ans=0; while(x>0){ ans=ans+bitval[x]; x=x-(x&-x); } return ans; } void updateit(int x){ while(x<N){ bitval[x]=bitval[x]+1; x=x+(x&-x); } } ll t1=0; ll tval=0; int main() { ios_base::sync_with_stdio(false);cin.tie(NULL); cin>>n; int maxs=0,maxpos=-1; rep(i,n){ int a;cin>>a; ar[i]=a; tval=tval+(ll)query(N)-query(ar[i]); updateit(ar[i]); rlval=(ar[i]-i); if(rlval<0) rlval=rlval*-1; if(maxs<rlval){ maxs=rlval; maxpos=i; } } rep(i,N) bitval[i]=0; updateit(ar[maxpos]); int max1=-1; //got ot ting tong int max2=-1; // goto tintnt ll maxj=tval; for(int i=maxpos+1;i<n;i++){ updateit(ar[i]); ll a1=query(N); ll b1=query(ar[i]); ll tmp=tval-(a1-b1)+(b1-1); ll a=query(N)-query(ar[maxpos]); if(ar[maxpos]<ar[i]){ a--; } ll b=query(ar[maxpos]-1); if(ar[maxpos]>ar[i]){ b--; } tmp=tmp-b+a; if(maxj>tmp){ max1=maxpos; max2=i; maxj=tmp; } } rep(i,N) bitval[i]=0; updateit(ar[maxpos]); for(int i=maxpos-1;i>=0;i--){ updateit(ar[i]); int val=query(ar[maxpos]); int val2=query(N); ll tmp=tval-(val2-val)+(val-1); ll a=val2-query(ar[i]); if(ar[maxpos]>ar[i]){ a--; } ll b=query(ar[i]-1); if(ar[maxpos]<ar[i]){ b--; } tmp=tmp-b+a; if(maxj>=tmp){ max1=maxpos; max2=i; maxj=tmp; } } if(max1!=-1){ int a=max1<max2?max1:max2; int b=max1>max2?max1:max2; cout<<a+1<<" "<<b+1<<endl; } else{ cout<<"Cool Array"<<endl; } }