#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int a[N], f[N];
int n, t, k, p, dis;
inline int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
inline void write(int x) {
  if (x < 0) putchar('-'), x = -x;
  if (x >= 10) write(x / 10);
  putchar(x % 10 + '0');
}
int main() {
  n = read(), t = read(), k = read();
  for (register int i = 1; i <= t; ++i) a[i] = read();
  a[0] = (k > n - t) ? 2 : 1;
  for (register int i = 0; i <= t; ++i) {
    f[i] = min(a[i], a[i + 1]);
    k -= (a[i] - f[i]);
  }
  if (k < 0 || a[0] > 1) {
    printf("-1\n");
    return 0;
  }
  for (register int i = t - 1; i; --i) {
    p = min(f[i] - 1, k);
    k -= p, f[i] -= p;
  }
  printf("%d\n", n);
  dis = 1;
  for (register int i = 1; i <= t; ++i) {
    for (register int j = 0; j < a[i]; ++j) {
      write(dis + (j % f[i - 1])), putchar(' ');
      write(dis + a[i - 1] + j), putchar('\n');
    }
    dis += a[i - 1];
  }
  return 0;
}
