#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define MOD 1000000007
#define INF 999999999999
using namespace std;

long long mind = 0, mine = 0;

#define MAXN 500005

int N;

ll tree2[500005];

ll read(long long idx){
    ll sum = 0;
    while (idx > 0){
        sum += tree2[idx];
        idx -= (idx & -idx);
    }
    return sum;
}

void update(long long idx ,ll val){
    while (idx <= N){
        tree2[idx] += val;
        idx += (idx & -idx);
    }
}

ll tree3[500005];

ll read3(long long idx){
    ll sum = 0;
    while (idx > 0){
        sum += tree3[idx];
        idx -= (idx & -idx);
    }
    return sum;
}

void update3(long long idx ,ll val){
    while (idx <= N){
        tree3[idx] += val;
        idx += (idx & -idx);
    }
}

ll tree4[500005];

ll read4(long long idx){
    ll sum = 0;
    while (idx > 0){
        sum += tree4[idx];
        idx -= (idx & -idx);
    }
    return sum;
}

void update4(long long idx ,ll val){
    while (idx <= N){
        tree4[idx] += val;
        idx += (idx & -idx);
    }
}

long long a[500005],b[500005];
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
	long long treeIndex = 0;
	long long n;
	cin >> n;
    N = n;
    bool f = true;
    cin >> a[1];
    b[1] = a[1];
	for(long long i=2;i<=n;i++) {
		cin >> a[i];
		b[i] = a[i];
    }
    sort(b+1,b+n+1);
    for(long long i=1;i<=n;i++) {
        if(b[i] != a[i]) {
            f = false;
            break;
        }
    }
    if(f) {
        cout << "Cool Array\n";
        return 0;
    }
    f = true;
	for(long long i=1;i<=n;i++) {
		if(b[i] != a[n-i+1]) {
			f = false;
			break;
		}
	}
	if(f)
	{
		cout << 1 << " " << n << endl;
		return 0;
	}
	long long finans=-1;
    
    long long swp = -1;
    long long grind = 0;

    //cout<<"earlier mind: "<<mind<<"\n";
    mind = -1;
    long long inv;
    long long max_inv = 0;
    inv = (read3(a[1]-1));
    if(max_inv<inv) {
        mind = 1;
        max_inv = inv;
    }
    update3(a[1],1);
    
    for(long long i=2;i<=n;i++) {
        inv = ((i-1)-read3(a[i]-1));
        if(max_inv<inv) {
            mind = i;
            max_inv = inv;
        }
        update3(a[i],1);

    }
    //cout<<"later mind: "<<mind<<"\n";

    mine = n;
    long long inv2;
    long long min_inv = 0;
    inv2 = (read4(a[n]-1));
    if(min_inv < inv2) {
        mine = n;
        min_inv = inv2;
    }
    update4(a[n],1);
    
    for(long long i=n-1;i>=1;i--) {
        inv2 = (read4(a[i]-1));
        if(min_inv <= inv2) {
            mine = i;
            min_inv = inv2;
        }
        update4(a[i],1);
    }
    
    //cout << "mine = " << mine;
    
    
    // check for descending
    bool desc = true;
    for(int i=2;i<=n;i++) {
        if(a[i-1]<a[i]) {
            desc = false;
        }
    }
    if(desc) {
        cout<<"1 "<<n<<"\n";
        return 0;
    }
    
    long long lind = mind - 1;
    while(lind>=mine)
    {
        long long tmpans = 0;
        long long rind = mind;

        if(a[lind] > a[rind] ) {

            long long smaller = read(a[lind] - 1);
            tmpans += smaller;
            tmpans -= (rind-lind-smaller);
            update(a[lind], 1);

            if(a[lind]>a[rind]) {
                grind += 1;
            }
            tmpans+=grind;
            tmpans-=(rind-lind-grind);


        }

        if(swp <= tmpans)
        {
            swp = tmpans;
            finans = lind;
        }
        lind--;
    }

    cout << finans << " " << mind << endl;
    // Intrav(tree, 0);
    
	return 0;
}