#include <bits/stdc++.h>
using namespace std;
int N, num, A[1111111], d1 = 1, d2 = 2, d3;
vector<pair<int, int> > Out;
int main() {
  scanf("%d", &N);
  for (int n = 1; n <= N; ++n) scanf("%d", A + n);
  for (int n = 3; n <= N; ++n)
    for (d3 = n;;) {
      if (A[d1] < A[d2]) swap(d1, d2);
      if (A[d1] < A[d3]) swap(d1, d3);
      if (A[d2] < A[d3]) swap(d2, d3);
      if (A[d3] == 0) break;
      for (int m = A[d2] / A[d3]; m; m >>= 1) {
        int d = (m & 1) ? d2 : d1;
        Out.push_back(make_pair(d3, d));
        A[d] -= A[d3];
        A[d3] <<= 1;
      }
    }
  if ((A[d1] == 0) + (A[d2] == 0) + (A[d3] == 0) != 1) {
    puts("-1");
    return 0;
  }
  printf("%d\n", Out.size());
  for (int n = 0; n < Out.size(); ++n)
    printf("%d %d\n", Out[n].first, Out[n].second);
  return 0;
}
