#include <bits/stdc++.h>
using namespace std;
int n, k, i, x, j, k1;
vector<int> d[100010];
vector<pair<int, int> > ans;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cerr.tie(0);
  cout.tie(0);
  cin >> n >> k;
  for (i = 1; i <= n; i++) cin >> x, d[x].push_back(i);
  for (i = 1; i < n; i++) {
    k1 = k - 1 + (i == 1);
    for (j = 0; j < d[i].size(); j++) {
      if (!k1 && !d[i - 1].empty()) k1 = k - 1 + (i == 1), d[i - 1].pop_back();
      if (!k1 || d[i - 1].empty()) {
        cout << -1 << endl;
        return 0;
      }
      k1--;
      ans.push_back({d[i - 1].back(), d[i][j]});
    }
  }
  if (ans.size() != n - 1) {
    cout << -1 << endl;
    return 0;
  } else {
    cout << n - 1 << endl;
    for (i = 0; i < n - 1; i++)
      cout << ans[i].first << " " << ans[i].second << endl;
  }
  return 0;
}
