#include <iostream> using namespace std; void longestIncrease(int a[],int l,int r){ int n=r-l+1; if(n==0) return ; int d[n];int num=1; for(int i=l;i<r+1;i++){ d[i]=1; for(int j=l;j<i;j++){ if(a[j]<a[i]) { d[i]=max(d[i],d[j]+1); } } num=max(num,d[i]); } for(int i=l;i<r+1;i++) a[i]=d[i]; } void longestDecrease(int a[],int l,int r){ int n=r-l+1; int d[n];int num=1; for(int i=r;i>l-1;i--){ d[i]=1; for(int j=r;j>i;j--){ if(a[j]<a[i]) d[i]=max(d[i],d[j]+1); } num=max(num,d[i]); } for(int i=l;i<r+1;i++) a[i]=d[i]; } int main() { int n; while(cin>>n){ int a[n]; int dp1[n]; int dp2[n]; for(int i=0;i<n;i++){ scanf("%d",&a[i]); dp1[i]=a[i]; dp2[i]=a[i]; } longestIncrease(dp1,0,n-1); longestDecrease(dp2,0,n-1); int maxh=1; for(int i=0;i<n;i++){ if((dp1[i]+dp2[i])>maxh) maxh=dp1[i]+dp2[i]; } cout<<(n-maxh+1)<<endl; } }