#include <cmath>
#include <map>
#include<fstream>
#include<algorithm>
#include <iostream>
#include<numeric>
#include<utility>
#include<functional>
#include<stdio.h>
#include <iomanip>
#include<assert.h>
#include<memory.h>
#include<bitset>
#include<algorithm>
#include <cassert>
#include <stack>
#include<cstring>
#include <cmath>
#include <complex>
#include <sstream>
#include<cstring>
#include <complex>
#include<cstdlib>
#include <set>
#include <ctime>
#include <queue>
#include <vector>
#include <iterator>
#include <math.h>
#include <cstdio>
#include<map>
using namespace std;
#define ll long long
#define MAXN 110005
#define fast std::ios_base::sync_with_stdio(false);
#define sz(x) ((int)(x.size()))
#define REP(i,v) for(int i = 0 ; i < sz(v) ; ++i)
vector<int> v;
int DP[100001];
int main()
{

	int n;
	scanf("%d",&n);
	v.resize(n);
	for(int i = 0; i < n ; ++i)
	{
		scanf("%d",&v[i]); --v[i];
		DP[v[i]] = i;
	}
	for(int i = n - 2 ; i >= 0 ; --i)
	{
		DP[i] = max(DP[i],DP[i + 1]);
	}
	int ans = -1;
	for(int i = 0 ; i < n ; ++i)
	{
		if(v[i] != n - 1 && DP[v[i]] - i > 0)
		ans = max(ans,DP[v[i]] - i);
		
	}
	cout << ans;

}
