#include <bits/stdc++.h>
int main(int argc, char const *argv[]) {
  int n, i, j, sum = 0;
  int a[1000];
  int z[1000];
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%d", &a[i]);
    z[i] = 0;
    sum += a[i];
  }
  if (a[0] == 0) {
    printf("%d", -1);
    return 0;
  }
  if (sum < n - 1) {
    printf("%d", -1);
    return 0;
  }
  z[0] = 1;
  printf("%d\n", n - 1);
  while (1) {
    int max = 0;
    int maxi = 0;
    for (i = 0; i < n; i++) {
      if (z[i]) {
        if (max < a[i]) {
          maxi = i;
          max = a[i];
        }
      }
    }
    a[maxi] = 0;
    if (max == 0) {
      return 0;
    }
    for (i = 0; i < max; i++) {
      int max2 = -1;
      int maxi2 = 0;
      for (j = 0; j < n; j++) {
        if (!z[j]) {
          if (max2 < a[j]) {
            maxi2 = j;
            max2 = a[j];
          }
        }
      }
      if (maxi2 == 0) {
        return 0;
      }
      printf("%d %d\n", maxi + 1, maxi2 + 1);
      z[maxi2] = 1;
    }
  }
  return 0;
}
