#include <bits/stdc++.h> #define pb push_back #define fi first #define sc second #define inf 2000000000ll #define MP make_pair #define orta ((a+b)/2) #define min3(a,b,c) min(a,min(b,c)) #define max3(a,b,c) max(a,max(b,c)) #define dbg(x) cerr<<#x<<":"<<x<<endl #define N 1000005 #define MOD 1000000007 using namespace std; typedef long long ll; typedef pair <int ,int> ii; int n, d[N], yer[N], fen[N], ekle[N << 2]; ii solup[N], sagup[N], sg[N << 2]; pair < int, ii > q[N << 1]; void up(int k) { while(k) { fen[k]++; k -= k & -k; } } int get(int k) { int top = 0; while(k < N) { top += fen[k]; k += k & -k; } return top; } void init(int k, int a, int b) { if(a == b) { sg[k] = ii(0, a); return; } init(2*k, a,orta); init(2*k+1,orta+1,b); sg[k] = max(sg[2*k], sg[2*k+1]); } void up(int k, int a, int b, int x, int y, int us) { if(y < a || b < x) return; if(x <= a && b <= y) { sg[k].fi += us; ekle[k] += us; return; } up(2*k, a, orta, x, y, us); up(2*k+1, orta + 1, b, x, y, us); sg[k] = max(sg[2*k], sg[2*k+1]); sg[k].fi += ekle[k]; } int main() { scanf("%d",&n); for(int i = 1; i <= n; i++) { scanf("%d",&d[i]); d[i]!=i; yer[d[i]]=i; } int mx = 0; vector < int > vsol, vsag; for(int i = 1; i <= n; i++) { mx = max(mx, d[i]); if(mx == d[i]) vsol.push_back(d[i]); int tut = lower_bound(vsol.begin(), vsol.end(), d[i]) - vsol.begin(); solup[i] = ii(tut, vsol.size() - 1); if(solup[i].fi > solup[i].sc) solup[i].fi = -1; } int mn = inf; for(int i = n; i >= 1; i--) { mn = min(mn, d[i]); if(mn == d[i]) vsag.push_back(-d[i]); int tut = lower_bound(vsag.begin(), vsag.end(), -d[i]) - vsag.begin(); sagup[i] = ii(tut, vsag.size() - 1); if(sagup[i].fi > sagup[i].sc) sagup[i].fi = -1; } int say = 0; for(int i = 1; i <= n; i++) if(solup[i].fi != -1 and sagup[i].fi != -1) { q[say++] = MP(solup[i].fi, ii(sagup[i].fi, sagup[i].sc)); q[say++] = MP(solup[i].sc + 1, ii(sagup[i].fi - inf, sagup[i].sc - inf)); } pair < int, ii > cev = MP(-1, ii(0, 0)); sort(q, q + say); init(1, 0, n - 1); for(int i = 0; i < say; i++) { int j = q[i].fi,a=q[i].sc.fi,b=q[i].sc.sc; int k = a < 0 ? -1 : 1; if(k == -1) { a += inf; b += inf; } up(1, 0, n - 1, a, b, k); if(k == 1 && sg[1].fi >= cev.fi) { pair < int, ii > don = MP(sg[1].fi, ii(yer[vsol[j]], yer[-vsag[sg[1].sc]])); if(don.fi > cev.fi || (don.sc < cev.sc && don.fi == cev.fi)) cev = don; } } if(cev.fi==1) { printf("Cool Array"); } else printf("%d %d\n", cev.sc.fi,cev.sc.sc); }