#include <bits/stdc++.h>
using namespace std;
string itos(int x) {
  stringstream ss;
  ss << x;
  return ss.str();
}
int n, t, k, a[200010];
vector<int> near[200010];
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> t >> k;
  a[0] = 1;
  for (int i = 1; i <= t; i++) cin >> a[i];
  {
    int tt = 0;
    for (int i = 1; i <= t; i++) tt += max(0, a[i] - a[i + 1]);
    k -= tt;
  }
  for (int i = 0, j = 1; i <= t; i++) {
    int now = j;
    for (; j - now < a[i]; j++) {
      if (i) {
        int u = min(j - a[i - 1], now - 1);
        near[u].push_back(j);
      }
    }
  }
  for (int i = 1, now = 1, j = 2; i < t; i++) {
    int tmp = now + a[i];
    now += min(a[i], a[i + 1]);
    for (; k > 0 && j < now; j++) {
      near[now].push_back(near[j].back());
      near[j].pop_back();
      k--;
    }
    now = tmp;
    j = now + 1;
  }
  if (k) {
    cout << -1 << endl;
    return 0;
  }
  cout << n << endl;
  for (int i = 1; i <= n; i++)
    for (auto x : near[i]) cout << x << ' ' << i << endl;
  return 0;
}
