#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int a[N], sum[N], mx[N];
int n, t, k;
int main() {
  scanf("%d%d%d", &n, &t, &k);
  for (int i = 1; i <= t; i++) scanf("%d", a + i);
  sum[1] = 1;
  for (int i = 1; i <= t; i++) sum[i + 1] = sum[i] + a[i];
  int Min = mx[t] = a[t], Max = a[t];
  for (int i = 1; i < t; i++) Min += (mx[i] = max(0, a[i] - a[i + 1]));
  for (int i = t - 1; i >= 1; i--) mx[i] += mx[i + 1];
  for (int i = 1; i < t; i++) Max += a[i] - 1;
  if (!(Min <= k && k <= Max)) {
    puts("-1");
    return 0;
  }
  printf("%d\n", n);
  for (int i = 1; i <= a[1]; i++) printf("%d %d\n", 1, 1 + i);
  for (int i = 1; i < t; i++) {
    int t = min(k - mx[i + 1], a[i] - 1);
    t = a[i] - t;
    for (int j = 1; j <= t; j++) printf("%d %d\n", sum[i] + j, sum[i + 1] + j);
    for (int j = t + 1; j <= a[i + 1]; j++)
      printf("%d %d\n", sum[i] + 1, sum[i + 1] + j);
    k -= a[i] - t;
  }
  return 0;
}
