#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<set>
#include<queue>
#include<map>
#include<bitset>
using namespace std;
#define PII pair<int,int>
#define X first
#define Y second
#define PB push_back
#define CLR(a) memset(a, 0, sizeof(a))
#define FOR(i,a,b) for (int i=(a);i<(b);i++)
#define FOE(i,a,b) for (int i=(a);i<=(b);i++)
#define FIT(i,a) for (__typeof__((a).begin()) i = (a).begin(); i != (a).end(); i++)
#define TRA(i,a,b) for (int i = (a); i != -1; i = (b)[i])
#define INF (1 << 30)
#define EPS (1e-9)
#define REP(i,n) FOR(i,0,n)
#define LL long long
#define MOD 1000000007
#define N 2000000
const double PI = acos(-1.0);
#define flt(x,y) ((x)<(y)-EPS)
#define fgt(x,y) flt(y,x)
#define fle(x,y) !fgt(x,y)
#define fge(x,y) !flt(x,y)
#define feq(x,y) (fabs((x)-(y))<EPS)
struct P{
        LL x, y;
        P(){ }
        P(LL x,LL y):x(x),y(y){ }
        void eat(){ scanf("%lf%lf",&x,&y); }
        P operator+(const P &p)const{ return P(x+p.x, y+p.y); }
        P operator-(const P &p)const{ return P(x-p.x, y-p.y); }
        //      P operator*(double k){ return P(x*k, y*k); }
        LL operator*(P p){ return x*p.x + y*p.y; }
        LL operator^(P p){ return x*p.y - y*p.x; }
        LL mag2() { return x*x+y*y; }
        double mag(){ return sqrt(mag2()); }
        bool operator<(const P &p)const {// usage example: convex hull
                if (feq(x,p.x)) return flt(y,p.y);
                return flt(x,p.x);
        }
        bool operator==(const P &p)const { return feq(x,p.x) && feq(y,p.y); }
        void prt() { printf("(%lld,%lld)\n", x, y); }
}p[N];

bool ccw(P a, P b, P c) { return fgt((b-a)^(c-a), 0); }

vector<P> v1, v2;

void MonoHull(P *p, int n, P *hl, int &sz){
        sz = 0; sort(p, p + n);//sort in PII
        for (int i = 0; i < n; i++){
                while (sz > 1 && !ccw(hl[sz - 2], hl[sz - 1], p[i])) sz--;
                hl[sz++] = p[i];
        } int k = sz;
        //find increasing points of lower hull
//      FOR(i,0,sz) hl[i].prt(); puts("-----------------------");
        v2.PB(hl[sz - 1]);
        for (int i = sz - 2; i >= 0; i--){
                if (hl[i].y < v2.back().y) v2.PB(hl[i]);
                else break;
        }
        reverse(v2.begin(), v2.end());
//      FOR(i,0,sz) v2[i].prt(); puts("-----------------------");

        for (int i = n - 2; i >= 0; i--){//n-1 ??
                while (sz > k && !ccw(hl[sz - 2], hl[sz - 1], p[i])) sz--;
                hl[sz++] = p[i];
        }
        if (sz == 1) hl[sz] = hl[0];
        if (sz > 1) --sz;
        //find increasing points of upper hull
        v1.PB(hl[0]);
        for (int i = sz - 1; i >= 0; i--){
                if (hl[i].y > v1.back().y) v1.PB(hl[i]);
                else break;
        }
}

P hull[N];
int sz;

int n, m, a[N], lds[N], b[3000][3000];
int main(){
        scanf("%d", &n);
        FOR(i,0,n) scanf("%d", a + i);
        int ok = 1;
        FOR(i,0,n-1) if (a[i] > a[i + 1]) ok = 0;
        if (ok){
                puts("Cool Array");
                return 0;
        }
        FOR(i,0,n) p[i].x = i;
        FOR(i,0,n) p[i].y = a[i];
        //FOR(i,0,n) p[i].prt();
        MonoHull(p, n, hull, sz);
        /*
        FOR(i,0,sz) hull[i].prt();
        puts("-----");
        FOR(i,0,v1.size()) v1[i].prt();
        puts("-----");
        FOR(i,0,v2.size()) v2[i].prt();
        puts("-----");
        */
        int aaa = max(v1.size(), v2.size());
        //while(aaa > 2000);
        int tt = -1;
        PII ans, tmp;
        FOR(i,0,v1.size()) FOR(j,0,v2.size()){
                P x = v1[i], y = v2[j];
                if (y.y > x.y) break;
                tmp = PII(x.x, y.x);
                int sum = 0;
                FOR(k,x.x + 1, y.x) if (x.y > a[k] && a[k] > y.y) sum++;
                sum *= 2;
                sum++;
                if (sum > tt || (sum == tt && tmp < ans)){
                        ans = tmp;
                        tt = sum;
                }
        //      x.prt(); y.prt(); printf("%d\n", sum); printf("%d %d\n", ans.X, ans.Y); puts("-------------");
        }
        printf("%d %d\n", 1 + ans.X, 1 + ans.Y);

        return 0;
}