#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e5 + 22;
int n, t, k, ted, cnt;
vector<int> v[MAXN], G[MAXN];
void PRINT() {
  cout << n << endl;
  for (int i = 1; i <= n; i++)
    for (int j = 0; j < G[i].size(); j++) cout << i << " " << G[i][j] << endl;
  exit(0);
}
int main() {
  cin >> n >> t >> k;
  v[0].push_back(1);
  cnt = 2;
  for (int i = 1, x; i <= t; i++) {
    cin >> x;
    ted += x - 1;
    for (int j = 0; j < x; j++) v[i].push_back(cnt++);
  }
  ted++;
  for (int i = 0; i < t; i++)
    for (int j = 0; j < v[i + 1].size(); j++) G[v[i][0]].push_back(v[i + 1][j]);
  if (ted == k) PRINT();
  for (int i = t - 1; i >= 1; i--) {
    cnt = 1;
    while (G[v[i][0]].size() > 1) {
      if (v[i].size() == cnt) break;
      G[v[i][cnt]].push_back(G[v[i][0]].back());
      G[v[i][0]].pop_back();
      ted--;
      cnt++;
      if (ted == k) PRINT();
    }
  }
  cout << -1;
  return 0;
}
