#include <bits/stdc++.h>
using namespace std;
const int maxn = 200005;
vector<int> f[maxn];
int p[maxn], s[maxn];
int main() {
  int n, t, k, i, j, u, m;
  scanf("%d%d%d", &n, &t, &k);
  s[0] = 1;
  f[0].push_back(1);
  u = 2;
  m = 0;
  for (i = 1; i <= t; i++) {
    scanf("%d", &s[i]);
    for (j = 0; j < s[i]; j++) {
      f[i].push_back(u);
      p[u++] = f[i - 1][0];
    }
    if (s[i] < s[i - 1]) m += s[i - 1] - s[i];
  }
  m += s[t];
  if (k < m || k > n - t) {
    printf("-1\n");
    return 0;
  }
  m = n - t;
  for (i = 2; i <= t; i++) {
    if (m == k) break;
    for (j = 1; j < min(s[i], s[i - 1]); j++) {
      p[f[i][j]] = f[i - 1][j];
      m--;
      if (m == k) break;
    }
    if (m == k) break;
  }
  printf("%d\n", n);
  for (i = 1; i <= t; i++) {
    for (j = 0; j < s[i]; j++) printf("%d %d\n", f[i][j], p[f[i][j]]);
  }
  return 0;
}
