#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int dp[1 << 12]; int k[12]; vector V; bool use[1 << 12]; inline bool dfs(int val){ int siz = V.size(); if (use[val]){ return dp[val]; } use[val] = true; for (int i = 0; i < siz; i++){ if ((val&V[i])){ continue; } int nex = val | V[i]; dp[val] |= dfs(nex) ^ true; } return dp[val]; } vector > vv; int main(){ int n; cin >> n; for (int i = 0; i < n; i++){ scanf("%d", &k[i]); } for (int i = 0; i < (1 < v; for (int j = 0; j < n; j++){ if ((i >> j) & 1){ rest++; v.push_back(k[j]); } } if (rest == 3){ if (v[1] < v[0] && v[1] < v[2]){ } else{ if (v[1]>v[0] && v[1] > v[2]){ } else{ continue; } } V.push_back(i); } } for (int i = 0; i < V.size(); i++){ if (dfs(V[i])==false){ vector outt; for (int j = 0; j < n; j++){ if ((V[i] >> j) & 1){ outt.push_back(j); } } vv.push_back(outt); //return 0; } } if (vv.size()){ sort(vv.begin(), vv.end()); vector outt = vv[0]; for (int j = 0; j < 3; j++){ if (j){ printf(" "); } printf("%d", outt[j]); } puts(""); return 0; } puts("-1"); return 0; }