#include #define Add(x,y) (x+y>=mod)?(x+y-mod):(x+y) #define lowbit(x) x&(-x) #define pi pair #define pii pair> #define iip pair,ll> #define ppii pair,pair> #define fi first #define se second #define full(l,r,x) for(auto it=l;it!=r;it++) (*it)=x #define Full(a) memset(a,0,sizeof(a)) #define open(s1,s2) freopen(s1,"r",stdin),freopen(s2,"w",stdout); #define For(i,l,r) for(register int i=l;i<=r;i++) #define _For(i,l,r) for(register int i=r;i>=l;i--) using namespace std; typedef double db; typedef unsigned long long ull; typedef long long ll; bool Begin; const ll N=13,M=N*N*N; inline ll read(){ ll x=0,f=1; char c=getchar(); while(c<'0'||c>'9'){ if(c=='-') f=-1; c=getchar(); } while(c>='0'&&c<='9'){ x=(x<<1)+(x<<3)+(c^48); c=getchar(); } return x*f; } inline void write(ll x){ if(x<0){ putchar('-'); x=-x; } if(x>9) write(x/10); putchar(x%10+'0'); } struct Node{ ll x,y,z; ll a,b,c; bool operator<(const Node&rhs)const{ if(x^rhs.x) return x ans; bool f[N]; bool dfs(){ bool F=0,H=0; For(i,1,cnt){ if(f[x[i]]||f[y[i]]||f[z[i]]) continue; F=1; f[x[i]]=f[y[i]]=f[z[i]]=1; if(!dfs()) H=1; f[x[i]]=f[y[i]]=f[z[i]]=0; } if(!F) return 0; return H; } bool End; int main(){ n=read(); For(i,1,n) a[i]=read(); For(i,1,n){ For(j,i+1,n){ For(k,j+1,n){ if(a[i]==a[j]||a[j]==a[k]||a[i]==a[k]) continue; if(max({a[i],a[j],a[k]})==a[j]||min({a[i],a[j],a[k]})==a[j]){ ++cnt; x[cnt]=i; y[cnt]=j; z[cnt]=k; } } } } For(i,1,cnt){ f[x[i]]=f[y[i]]=f[z[i]]=1; if(!dfs()) ans.push_back({a[x[i]],a[y[i]],a[z[i]],x[i],y[i],z[i]}); f[x[i]]=f[y[i]]=f[z[i]]=0; } if(!ans.size()){ puts("-1"); exit(0); } sort(ans.begin(),ans.end()); write(ans[0].a-1); putchar(' '); write(ans[0].b-1); putchar(' '); write(ans[0].c-1); putchar(' '); cerr<<'\n'<