#define N 50010int a[N];int max(int i,int j){return a[i]>a[j]?i:j;}int min(int i,int j){return a[i]>a[j]?j:i;}int dp1[20][N];//dp[i][j]表示從j開始,長度為2^i區間最大值(最小值)int dp2[20][N];int n,m;void init_rmq(){ int i,j; for(i=1;i<=n;i++){ dp1[0][i] = i; dp2[0][i] = i; } int t = floor(log((double)n)/log(2.0));//向下取整 for(i=1;i<=t;i++){ for(j=1;j+(1<<(i-1))<=n;j++){ dp1[i][j] = max(dp1[i-1][j],dp1[i-1][j+(1<<(i-1))]); dp2[i][j] = min(dp2[i-1][j],dp2[i-1][j+(1<<(i-1))]); } }}int rmq(int l,int r,int s){ int k = floor(log((r-l+1)*1.0)/log(2.0)); if(s==1){ return max(dp1[k][l],dp1[k][r-(1<<k)+1]); } else return min(dp2[k][l],dp2[k][r-(1<<k)+1]);}int gao(int x){ int l = 1,r = x-1,mid; while(l<r){ mid = (l+r)>>1; if(a[rmq(mid,r,1)]<a[x])r = mid-1; else l = mid+1; } return rmq(l,x,2);}int main(){FRE; while(scanf("%d",&n) != -1){ int i,j; for(i=1;i<=n;i++){ scanf("%d",&a[i]); } init_rmq(); int ans = 0; for(i=1;i<=n;i++){ int t = i-gao(i); if(ans<t)ans = t; } if(ans<1)ans=-1; printf("%d\n",ans); } return 0;}