func_code_string: #include <bits/stdc++.h>   using namespace std;   set<pair<long long int, long long int> > s;   pair<long long int, long long int> p;   long long int d[300000], x, n, k, l = 0, di = 0;   vector<long long int> v[300000];   int main() {     ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);     cin >> n >> k;     for (int i = 1; i <= n; i++) {       cin >> x;       d[i] = x;       v[x].push_back(i);       di = max(x, di);     }     if (v[0].size() > 1 || v[1].size() > k) {       cout << -1;       return 0;     }     for (int i = 0; i <= di; i++)       if (v[i].size() == 0) {         cout << -1;         return 0;       }     for (int i = 0; i < v[1].size(); i++) s.insert({v[0][0], v[1][i]});     for (int i = 2; i <= di; i++) {       if (v[i - 1].size() * (k - 1) < v[i].size()) {         cout << -1;         return 0;       }       x = 1;       l = 0;       for (int j = 0; j < v[i].size(); j++) {         if (x > k - 1) {           l++;           x = 1;         }         s.insert({v[i - 1][l], v[i][j]});         x++;       }     }     cout << s.size() << endl;     while (!s.empty()) {       p = *s.begin();       cout << p.first <<     << p.second <<   n ;       s.erase(s.begin());     }     return 0;   }   