#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, t, k;
  cin >> n >> t >> k;
  int a[t + 1];
  int maxx[t + 1], minn[t + 1], real[t + 1], maxxx = 0, minnn = 0;
  maxx[0] = minn[0] = a[0] = 0;
  for (int i = 1; i <= t; i++) {
    cin >> a[i];
    maxx[i] = a[i] - 1;
    minn[i - 1] = max(0, a[i - 1] - a[i]);
    maxxx += maxx[i];
    minnn += minn[i - 1];
    real[i - 1] = a[i - 1] - minn[i - 1];
  }
  maxx[t] = minn[t] = a[t];
  minnn += a[t];
  maxxx++;
  if (k < minnn or k > maxxx) {
    cout << -1 << endl;
    return 0;
  }
  real[0] = 1;
  real[t] = 0;
  int cur = 1, next = 2;
  k -= minnn;
  for (int i = 1; i < t and k > 0; i++) {
    int old = real[i];
    real[i] = max(a[i] - maxx[i], real[i] - k);
    k += real[i] - old;
  }
  cout << n << endl;
  for (int i = 0; i < t; i++) {
    int l = a[i + 1];
    while (a[i + 1] != 0)
      for (int kk = 0; kk < real[i] and a[i + 1] > 0; kk++) {
        cout << cur + kk << ' ' << next++ << endl;
        a[i + 1]--;
      }
    cur = next - l;
  }
  return 0;
}
