#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e5 + 10;
int a[MAXN], loc[MAXN];
pair<int, int> sav[MAXN];
int main() {
  int n, t, k;
  scanf("%d%d%d", &n, &t, &k);
  bool pass = true;
  int sum = 0, m = 0;
  a[0] = loc[0] = 1;
  for (int i = 1; i <= t; i++) {
    scanf("%d", &a[i]);
    if (a[i] < a[i - 1]) {
      sum += a[i - 1] - a[i];
      loc[++m] = i - 1;
    }
  }
  sum += a[t];
  if (k < sum || k > n - t) pass = false;
  if (pass) {
    int cnt = 0, j = 1;
    for (int i = 1; i <= t; i++) {
      int l = j - min(a[i - 1], a[i]) + 1, r = j;
      for (int ai = 1; ai <= a[i]; ai++) {
        if (sum == k) {
          if (l == r)
            sav[++cnt] = make_pair(++j, r);
          else
            sav[++cnt] = make_pair(++j, l++);
        } else {
          sav[++cnt] = make_pair(++j, r);
          if (l != r) {
            sum++;
            l++;
          }
        }
      }
    }
    printf("%d\n", n);
    for (int i = 1; i <= cnt; i++)
      printf("%d %d\n", sav[i].first, sav[i].second);
  } else {
    puts("-1");
  }
  return 0;
}
