#include<bits/stdc++.h>
using namespace std;
#define int long long
const int MAX_N = 1 << 17;
int n,dat[2*MAX_N-1];
void init(int n_){
  n=1;
  while(n<n_) n*=2;
  for(int i=0;i<2*n-1;i++) dat[i]=0;
}
void update(int k,int a){
  k+=n-1;
  dat[k]=a;
  while(k>0){
    k=(k-1)/2;
    dat[k]=max(dat[k*2+1],dat[k*2+2]);
  }
}
// find(a,b,0,0,n);
int query(int a,int b,int k,int l,int r){
  if(r<=a||b<=l) return 0;
  if(a<=l&&r<=b) return dat[k];
  else{
    int vl=query(a,b,k*2+1,l,(l+r)/2);
    int vr=query(a,b,k*2+2,(l+r)/2,r);
    return max(vl,vr);
  }
}
signed main(){
  int m;
  cin>>m;
  int dp[m+1];
  memset(dp,0,sizeof(dp));
  init(m+1);
  int ans=0;
  for(int i=0;i<m;i++){
    int x;
    cin>>x;
    dp[x]=query(0,x,0,0,n)+x;
    //cout<<x<<":"<<dp[x]<<endl;
    ans=max(ans,dp[x]);
    update(x,dp[x]);
  }
  cout<<m*(m+1)/2-ans<<endl;
  return 0;
}