func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename T>   void print_container(ostream& os, const T& c) {     const char* _s =    ;     if (!c.empty()) {       __typeof__(c.begin()) last = --c.end();       for (__typeof__((c).begin()) it = (c).begin(); it != (c).end(); ++it) {         os << *it;         if (it != last) os << _s;       }     }   }   template <typename T>   ostream& operator<<(ostream& os, const vector<T>& c) {     print_container(os, c);     return os;   }   template <typename T>   ostream& operator<<(ostream& os, const set<T>& c) {     print_container(os, c);     return os;   }   template <typename T>   ostream& operator<<(ostream& os, const multiset<T>& c) {     print_container(os, c);     return os;   }   template <typename T>   ostream& operator<<(ostream& os, const deque<T>& c) {     print_container(os, c);     return os;   }   template <typename T, typename U>   ostream& operator<<(ostream& os, const map<T, U>& c) {     print_container(os, c);     return os;   }   template <typename T, typename U>   ostream& operator<<(ostream& os, const pair<T, U>& p) {     os <<  (  << p.first <<  ,   << p.second <<  ) ;     return os;   }   template <typename T>   void print(T a, int n, const string& split =    ) {     for (int i = 0; i < n; i++) {       cout << a[i];       if (i + 1 != n) cout << split;     }     cout << endl;   }   template <typename T>   void print2d(T a, int w, int h, int width = -1, int br = 0) {     for (int i = 0; i < h; ++i) {       for (int j = 0; j < w; ++j) {         if (width != -1) cout.width(width);         cout << a[i][j] <<    ;       }       cout << endl;     }     while (br--) cout << endl;   }   template <typename T>   void input(T& a, int n) {     for (int i = 0; i < n; ++i) cin >> a[i];   }   template <typename T, typename U>   void upmin(T& a, const U& b) {     a = min<T>(a, b);   }   template <typename T, typename U>   void upmax(T& a, const U& b) {     a = max<T>(a, b);   }   template <typename T>   void uniq(T& a) {     sort(a.begin(), a.end());     a.erase(unique(a.begin(), a.end()), a.end());   }   template <class T>   string to_s(const T& a) {     ostringstream os;     os << a;     return os.str();   }   template <class T>   T to_T(const string& s) {     istringstream is(s);     T res;     is >> res;     return res;   }   void fast_io() {     cin.tie(0);     ios::sync_with_stdio(false);   }   bool in_rect(int x, int y, int w, int h) {     return 0 <= x && x < w && 0 <= y && y < h;   }   const int dx[] = {0, 1, 0, -1};   const int dy[] = {1, 0, -1, 0};   int main() {     int n;     cin >> n;     int c[6666] = {};     for (int i = 0; i < (int)(n); ++i) {       int a;       cin >> a;       ++c[a];     }     int res = 0;     for (int i = 0; i < (int)(6600); ++i) {       if (c[i] > 1) {         res += c[i] - 1;         c[i + 1] += c[i] - 1;       }     }     cout << res << endl;   }   