#include "bits/stdc++.h" using namespace std; const int N = 5e5 + 5; int n; int arr[N]; struct node{ int cnt; node* left; node* right; node(int _cnt = 0 , node* _left = NULL , node* _right = NULL){ cnt = _cnt; left = _left; right = _right; } node* insert(int l , int r , int val); }; node* null; node* root[N]; node* node::insert(int l , int r , int val){ if(l == r){ return new node(1 , null , null); } int mid = l + r >> 1; if(val <= mid){ return new node(cnt + 1 , left -> insert(l , mid , val) , right); } else{ return new node(cnt + 1 , left , right -> insert(mid + 1 , r , val)); } } void insert(int pos , int val){ root[pos] = root[pos + 1] -> insert(1 , n , val); } int lquery(int ql , int qr , int val){ int cnt = 0; int l = 1; int r = n; node* ll = root[ql]; node* rr = root[qr + 1]; while(l < r){ int mid = l + r >> 1; if(val <= mid){ r = mid; ll = ll -> left; rr = rr -> left; } else{ cnt += ll -> left -> cnt - rr -> left -> cnt; l = mid + 1; ll = ll -> right; rr = rr -> right; } } return cnt; } int mn[N]; bool sorted = 1; int ans1 = -1; int ans2 = -1; int anscnt = 0; int main(){ null = new node(); null -> left = null -> right = null; scanf("%d" , &n); root[n + 1] = null; for(int i = 1 ; i <= n ; ++i){ scanf("%d" , arr + i); } for(int i = 1 ; i <= n ; ++i){ if(arr[i] != i){ sorted = 0; break; } } if(sorted){ puts("Cool Array"); } else{ mn[n] = n; int limit = 10000; for(int i = n - 1 ; i >= 1 ; --i){ mn[i] = mn[i + 1]; if(arr[i] < arr[mn[i]]){ mn[i] = i; } } for(int i = n ; i >= 1 ; --i){ insert(i , arr[i]); } for(int i = 1 ; i < n ; ++i){ int idx = i; int steps = 0; while(idx <= n){ ++steps; if(steps >= 10 && steps >= limit){ limit -= 50; break; } idx = mn[idx]; if(arr[idx] < arr[i]){ int cnt = 1 + lquery(i , idx - 1 , arr[i]) - lquery(i , idx - 1 , arr[idx]); if(cnt > anscnt){ anscnt = cnt; ans1 = i; ans2 = idx; } } ++idx; } } printf("%d %d\n" , ans1 , ans2); } }