#include <bits/stdc++.h>
using namespace std;
const int N = 1000000;
struct JS {
  int d, next;
} g[N];
int i, j, n, m, t, k, num, cur;
int fa[N], h[N], a[N], id[N];
void add(int x, int d) {
  num++;
  g[num].d = d;
  g[num].next = h[x];
  h[x] = num;
}
void init() {
  scanf("%d%d%d", &n, &t, &k);
  m = 1;
  add(0, 1);
  for (i = 1; i <= t; i++) {
    scanf("%d", &a[i]);
    for (j = m + 1; j <= m + a[i]; j++) add(i, j), fa[j] = h[i - 1];
    m += a[i];
    if (i < t)
      cur += a[i] - 1;
    else
      cur += a[i];
  }
  if (k > cur) {
    printf("-1\n");
    return;
  }
  for (i = t; i >= 1; i--) {
    if (cur == k) break;
    int p = h[i - 1], x = g[h[i]].next;
    for (; x > 0; x = g[x].next) {
      p = g[p].next;
      if (p == 0) break;
      fa[x] = p;
      cur--;
      if (cur == k) break;
    }
    if (cur == k) break;
  }
  if (cur != k) {
    printf("-1\n");
    return;
  }
  printf("%d\n", n);
  for (i = 2; i <= n; i++) printf("%d %d\n", i, fa[i]);
}
void work() {}
int main() {
  init();
  work();
  return 0;
}
