#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> numbers;
int n;
cin >> n;
for (int i = 0; i < n; ++i) {
int x;
cin >> x;
numbers.push_back(x);
}
if (n == 1) {
cout << 0 << endl;
return 0;
}
sort(numbers.begin(), numbers.end());
int ans = 0;
int mx = 0;
int dups = 0;
for (int i = 0; i < (int) numbers.size(); ++i) {
cout << "index: " << i << " number:" << numbers[i] << " dups: " << dups << endl;
if (i + 1 < (int) numbers.size() && numbers[i] == numbers[i + 1]) {
++dups;
continue;
}
int offset = 0;
if (mx >= numbers[i])
offset = mx - numbers[i] + 1;
cout << "offset: " << offset << endl;
cout << "increase 1: " << (dups * (dups + 1)) / 2 << " increase 2: " << (dups + 1) * offset << endl;
ans += (dups * (dups + 1)) / 2 + (dups + 1) * offset;
cout << "mx before: " << mx << endl;
mx = numbers[i] + dups + offset;
cout << "mx after: " << mx << endl;
dups = 0;
}
cout << ans << endl;
return 0;
}
// 1 1 2 2 3 7
// 9 0 1 0 1 4
// 1 1 4 4 5 7
// 9 0 3 0 1 2
// 1 2 3 4 5 6 4 4 5 7
// 1 1 1 1 1 1 4 4 5 7
// 0 1 2 3 4 5 0 1 0 0
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7Cgl2ZWN0b3I8aW50PiBudW1iZXJzOwoJaW50IG47CgljaW4gPj4gbjsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CgkJaW50IHg7CgkJY2luID4+IHg7CgkJbnVtYmVycy5wdXNoX2JhY2soeCk7Cgl9CgkKCWlmIChuID09IDEpIHsKCQljb3V0IDw8IDAgPDwgZW5kbDsKCQlyZXR1cm4gMDsKCX0KCQoJc29ydChudW1iZXJzLmJlZ2luKCksIG51bWJlcnMuZW5kKCkpOwoKCWludCBhbnMgPSAwOwoJaW50IG14ID0gMDsKCWludCBkdXBzID0gMDsKCQoJZm9yIChpbnQgaSA9IDA7IGkgPCAoaW50KSBudW1iZXJzLnNpemUoKTsgKytpKSB7CgkJY291dCA8PCAiaW5kZXg6ICIgPDwgaSA8PCAiIG51bWJlcjoiIDw8IG51bWJlcnNbaV0gPDwgIiBkdXBzOiAiIDw8IGR1cHMgPDwgZW5kbDsKCQlpZiAoaSArIDEgPCAoaW50KSBudW1iZXJzLnNpemUoKSAmJiBudW1iZXJzW2ldID09IG51bWJlcnNbaSArIDFdKSB7CgkJCSsrZHVwczsKCQkJY29udGludWU7CgkJfQoJCWludCBvZmZzZXQgPSAwOwoJCWlmIChteCA+PSBudW1iZXJzW2ldKQoJCQlvZmZzZXQgPSBteCAtIG51bWJlcnNbaV0gKyAxOwoJCQoJCWNvdXQgPDwgIm9mZnNldDogIiA8PCBvZmZzZXQgPDwgZW5kbDsKCQljb3V0IDw8ICJpbmNyZWFzZSAxOiAiIDw8IChkdXBzICogKGR1cHMgKyAxKSkgLyAyIDw8ICIgaW5jcmVhc2UgMjogIiA8PCAoZHVwcyArIDEpICogb2Zmc2V0IDw8IGVuZGw7CgkJYW5zICs9IChkdXBzICogKGR1cHMgKyAxKSkgLyAyICsgKGR1cHMgKyAxKSAqIG9mZnNldDsKCQljb3V0IDw8ICJteCBiZWZvcmU6ICIgPDwgbXggPDwgZW5kbDsKCQlteCA9IG51bWJlcnNbaV0gKyBkdXBzICsgb2Zmc2V0OwoJCWNvdXQgPDwgIm14IGFmdGVyOiAiIDw8IG14IDw8IGVuZGw7CgkJZHVwcyA9IDA7Cgl9CgkKCWNvdXQgPDwgYW5zIDw8IGVuZGw7CgkKCXJldHVybiAwOwp9CgovLyAxIDEgMiAyIDMgNwovLyA5IDAgMSAwIDEgNAoKCi8vIDEgMSA0IDQgNSA3Ci8vIDkgMCAzIDAgMSAyCgoKLy8gMSAyIDMgNCA1IDYgNCA0IDUgNwovLyAxIDEgMSAxIDEgMSA0IDQgNSA3Ci8vIDAgMSAyIDMgNCA1IDAgMSAwIDAK