#include <bits/stdc++.h>
using namespace std;
const int boss = 2e5;
int a[boss + 10], route[boss + 10];
int main() {
  int n, t, k, i, j, p;
  cin >> n >> t >> k;
  for (i = 1; i <= t; i++) scanf("%d", &a[i]);
  if (k > n - t)
    a[0] = 2;
  else
    a[0] = 1;
  for (i = 0; i <= t; i++) {
    route[i] = min(a[i], a[i + 1]);
    k -= a[i] - route[i];
  }
  if (k < 0 || a[0] > 1) return printf("-1"), 0;
  for (i = t - 1; i > 0; i--) {
    p = min(route[i] - 1, k);
    k -= p;
    route[i] -= p;
  }
  int d = 1;
  cout << n << endl;
  for (i = 0; i < t; i++) {
    for (j = 0; j < a[i + 1]; j++)
      printf("%d %d\n", d + j % route[i], d + a[i] + j);
    d += a[i];
  }
}
