#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int sign = 1, sum = 0;
  char c = getchar();
  while (!isdigit(c)) {
    if (c == '-') sign = -1;
    c = getchar();
  }
  while (isdigit(c)) {
    sum = (sum << 1) + (sum << 3) + c - '0';
    c = getchar();
  }
  return sign * sum;
}
const int N = 2e5 + 50;
int a[N];
int n, t, k;
int f[N];
int main() {
  n = read(), t = read(), k = read();
  for (int i = 1; i <= t; ++i) a[i] = read();
  if (k > n - t) return puts("-1"), 0;
  a[0] = 1;
  for (int i = 0; i <= t; ++i) f[i] = min(a[i], a[i + 1]), k -= a[i] - f[i];
  if (k < 0) return puts("-1"), 0;
  printf("%d\n", n);
  for (int p, i = t - 1; i > 0; --i) p = min(f[i] - 1, k), f[i] -= p, k -= p;
  int dis = 1;
  for (int i = 1; i <= t; ++i) {
    for (int j = 0; j < a[i]; ++j)
      printf("%d %d\n", dis + j % f[i - 1], dis + a[i - 1] + j);
    dis += a[i - 1];
  }
  return 0;
}
