#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace std;
using namespace __gnu_pbds;
template <class T> using Tree=tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>;
#define int long long
const int N=2e5+5;
const int INF=1e15+7;
int n,a[N],dpl[N],dpr[N],ans=INF;
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for(int i=1;i<=n;i++) cin >> a[i];
for(int i=2;i<=n;i++){
dpl[i]=dpl[i-1];
if(a[i]<=a[i-1]) dpl[i]+=(a[i-1]-a[i]+1);
}
for(int i=n-1;i>=1;i--){
dpr[i]=dpr[i+1];
if(a[i]<=a[i+1]) dpr[i]+=(a[i+1]-a[i]+1);
}
//cout << "\n";
//for(int i=1;i<=n;i++) cout << dpl[i] << " ";
//cout << "\n";
//for(int i=1;i<=n;i++) cout << dpr[i] << " ";
for(int i=1;i<=n;i++){
//int sum=dpl[i-1]+dpr[i+1];
//cout << sum << " : " << max(0LL,min(a[i-1],a[i+1])-a[i]) << "\n";
//sum-=max(0LL,min(a[i-1],a[i+1])-a[i]);
ans=min(ans,max(dpl[i],dpr[i]));
}
//cout << "\n";
cout << ans;
}