#include <bits/stdc++.h>
#define int long long
#define all(vec) vec.begin(),vec.end()
#define endl "\n"
#define readall(n, arr) for(int i=0;i<(n);i++) cin>>arr[i]
#define yes cout<<"YES\n"
#define no cout<<"NO\n"
#define loopi(n) for(int i=0;i<(n);i++)
#define loopj(n) for(int j=0;j<(n);j++)
#define loopk(n) for(int k=0;k<(n);k++)
#define mods (1000000007)
#define float double
//#define N 100000+5
using namespace std;
int binsrch(int arr[],int st,int nd,int k);
int nCr(int n,int r);
int nPr(int n,int r);
set<int>::iterator itr;
void solve(){
int n,counter=0;
cin>>n;
map<int,int> mp;
for(int i=0;i<n;i++) {
int x;
cin>>x;
mp[x]++;
}
map<int,int>::iterator it;
for(it=mp.begin();it!=mp.end();it++) {
if((it->second)>1) {
counter+=(it->second)-1;
mp[(it->first)+1]+=(it->second)-1;
mp[(it->first)]-=(it->second)-1;
}
}
string s=to_string(counter);
cout<<s;
}
int32_t main()
{
ios_base::sync_with_stdio(false);
cout.tie(nullptr);
cin.tie(nullptr);
//freopen("input.txt", "r", stdin);
//freopen("output.txt","w",stdout);
int t=1;
//cin>>t;
while(t--){
solve();
}
}
int binsrch(int arr[],int st,int nd,int k){
int ans=0;
while(st<=nd) {
int md=(st+nd)/2;
if(k>=arr[md]) {
ans=md+1;
st=md+1;
}else {
nd=md-1;
}
}
return ans;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBhbGwodmVjKSAgdmVjLmJlZ2luKCksdmVjLmVuZCgpCiNkZWZpbmUgZW5kbCAiXG4iCiNkZWZpbmUgcmVhZGFsbChuLCBhcnIpIGZvcihpbnQgaT0wO2k8KG4pO2krKykgY2luPj5hcnJbaV0KI2RlZmluZSB5ZXMgY291dDw8IllFU1xuIgojZGVmaW5lIG5vIGNvdXQ8PCJOT1xuIgojZGVmaW5lIGxvb3BpKG4pIGZvcihpbnQgaT0wO2k8KG4pO2krKykKI2RlZmluZSBsb29waihuKSBmb3IoaW50IGo9MDtqPChuKTtqKyspCiNkZWZpbmUgbG9vcGsobikgZm9yKGludCBrPTA7azwobik7aysrKQojZGVmaW5lIG1vZHMgICAgICgxMDAwMDAwMDA3KQojZGVmaW5lIGZsb2F0ICAgZG91YmxlCi8vI2RlZmluZSBOICAgMTAwMDAwKzUKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBiaW5zcmNoKGludCBhcnJbXSxpbnQgc3QsaW50IG5kLGludCBrKTsKaW50IG5DcihpbnQgbixpbnQgcik7CmludCBuUHIoaW50IG4saW50IHIpOwoKc2V0PGludD46Oml0ZXJhdG9yIGl0cjsKCnZvaWQgc29sdmUoKXsKICAgIGludCBuLGNvdW50ZXI9MDsKICAgIGNpbj4+bjsKICAgIG1hcDxpbnQsaW50PiBtcDsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspIHsKICAgICAgICBpbnQgeDsKICAgICAgICBjaW4+Png7CiAgICAgICAgbXBbeF0rKzsKICAgIH0KICAgIG1hcDxpbnQsaW50Pjo6aXRlcmF0b3IgaXQ7CgogICAgZm9yKGl0PW1wLmJlZ2luKCk7aXQhPW1wLmVuZCgpO2l0KyspIHsKICAgICAgICBpZigoaXQtPnNlY29uZCk+MSkgewogICAgICAgICAgICBjb3VudGVyKz0oaXQtPnNlY29uZCktMTsKICAgICAgICAgICAgbXBbKGl0LT5maXJzdCkrMV0rPShpdC0+c2Vjb25kKS0xOwogICAgICAgICAgICBtcFsoaXQtPmZpcnN0KV0tPShpdC0+c2Vjb25kKS0xOwogICAgICAgIH0KICAgIH0KICAgIHN0cmluZyBzPXRvX3N0cmluZyhjb3VudGVyKTsKICAgIGNvdXQ8PHM7Cn0KCmludDMyX3QgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY291dC50aWUobnVsbHB0cik7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgLy9mcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsKICAgIC8vZnJlb3Blbigib3V0cHV0LnR4dCIsInciLHN0ZG91dCk7CgogICAgaW50IHQ9MTsKICAgIC8vY2luPj50OwoKICAgIHdoaWxlKHQtLSl7CiAgICAgICAgc29sdmUoKTsKICAgIH0KCn0KCmludCBiaW5zcmNoKGludCBhcnJbXSxpbnQgc3QsaW50IG5kLGludCBrKXsKICAgIGludCBhbnM9MDsKICAgIHdoaWxlKHN0PD1uZCkgewogICAgICAgIGludCBtZD0oc3QrbmQpLzI7CiAgICAgICAgaWYoaz49YXJyW21kXSkgewogICAgICAgICAgICBhbnM9bWQrMTsKICAgICAgICAgICAgc3Q9bWQrMTsKICAgICAgICB9ZWxzZSB7CiAgICAgICAgICAgIG5kPW1kLTE7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGFuczsKfQ==