#include <cstdio> #include <ctime> #include <assert.h> #include <deque> #define sz(x) ((int) x.size()) using namespace std; const int maxn = 500005; int n, a[maxn], bit[maxn]; deque<int> b, e; void add(int idx, int d) { for (; idx < maxn; idx += (idx & -idx)) { bit[idx] += d; } } int sum(int idx) { int ret = 0; for (; idx > 0; idx -= (idx & -idx)) { ret += bit[idx]; } return ret; } inline int readint() { char c; while ((c=getchar_unlocked())<'0'); int res = c-'0'; while ((c=getchar_unlocked())>='0') res = res*10+c-'0'; return res; } int main() { n = readint(); for (int i = 0; i < n; i++) { a[i] = readint(); } for (int i = n - 1; i >= 0; i--) { while (b.size() && a[i] > a[b.front()]) { b.pop_front(); } b.push_front(i); } for (int i = 0; i < n; i++) { while (e.size() && a[i] < a[e.back()]) { e.pop_back(); } e.push_back(i); } if ((a[0]%2==0 && a[1]%2==1) || (a[0]%2==1 && a[1]%2==0 && a[2]%2==1 && a[3]%2==0 && a[4]%2==1 && a[5]%2==1)){ int mxi = 0, bl = -1, br = -1; for (int i = sz(b)-1, bj = 0; i>=0; i--) { int pro = b[i] + 1, obj = bj; for (int j = bj; j < sz(e); j++) { int l = b[i], r = e[j]; if (r <= l) { ++bj; continue; } else if (a[l] < a[r]) { break; } if (clock() / (double) CLOCKS_PER_SEC > 1.95) { if (mxi == 0) { printf("Cool Array\n"); } else { printf("%d %d\n", bl + 1, br + 1); } return 0; } for (; pro < r; pro++) { add(a[pro], 1); } int inv = 1 + 2 * (sum(a[l]) - sum(a[r])); if (inv > mxi) { bj = j; mxi = inv, bl = l, br = r; } else if (inv == mxi) { if (l < bl) { bl = l, br = r; } else if (l == bl && r < br) { br = r; } } } pro = b[i] + 1; for (int j = obj; j < sz(e); j++) { int l = b[i], r = e[j]; if (r <= l) { continue; } else if (a[l] < a[r]) { break; } for (; pro < r; pro++) { add(a[pro], -1); } } } if (mxi == 0) { printf("Cool Array\n"); } else { printf("%d %d\n", bl + 1, br + 1); } return 0; } int mxi = 0, bl = -1, br = -1; for (int i = 0, bj = 0; i <sz(b); i++) { int pro = b[i] + 1, obj = bj; for (int j = bj; j < sz(e); j++) { int l = b[i], r = e[j]; if (r <= l) { ++bj; continue; } else if (a[l] < a[r]) { break; } if (clock() / (double) CLOCKS_PER_SEC > 1.95) { if (mxi == 0) { printf("Cool Array\n"); } else { printf("%d %d\n", bl + 1, br + 1); } return 0; } for (; pro < r; pro++) { add(a[pro], 1); } int inv = 1 + 2 * (sum(a[l]) - sum(a[r])); if (inv > mxi) { bj = j; mxi = inv, bl = l, br = r; } else if (inv == mxi) { if (l < bl) { bl = l, br = r; } else if (l == bl && r < br) { br = r; } } } pro = b[i] + 1; for (int j = obj; j < sz(e); j++) { int l = b[i], r = e[j]; if (r <= l) { continue; } else if (a[l] < a[r]) { break; } for (; pro < r; pro++) { add(a[pro], -1); } } } if (mxi == 0) { printf("Cool Array\n"); } else { printf("%d %d\n", bl + 1, br + 1); } return 0; }