import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class hj118 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] degree = new int[n];
int sum = 0;
for (int i = 0; i < n; i++) {
degree[i] = scanner.nextInt();
sum += degree[i];
}
if ((sum & 1) == 1) {
System.out.print(-1);
return;
}
int target = sum / 2;
boolean[] dp = new boolean[target + 1];
int[] prev = new int[target + 1];
Arrays.fill(prev, -1);
dp[0] = true;
for (int i = 0; i < n && !dp[target]; i++) {
for (int j = target; j >= degree[i] && !dp[target]; j--) {
if (dp[j - degree[i]]) {
dp[j] = true;
prev[j] = i;
break; //这个break必须要,防止替换掉之前的
}
}
}
if (!dp[target]) {
System.out.print(-1);
return;
}
System.out.println(sum / 2);
ArrayList<Integer> vertex1 = new ArrayList<>();
ArrayList<Integer> vertex2 = new ArrayList<>();
for (int i = target; i > 0; i -= degree[prev[i]]) {
if (!vertex1.contains(prev[i])) {
vertex1.add(prev[i]);
}
}
// for(int i = 0; i < prev.length;i++)
// System.out.print(String.valueOf(prev[i])+" ");
for (int i = 0; i < n; i++) {
if (!vertex1.contains(i)) vertex2.add(i);
}
System.out.println(vertex1);
System.out.println(vertex2);
for (int i = 0; i < vertex1.size(); i++) {
int v1 = vertex1.get(i);
for (int j = 0; j < vertex2.size() && degree[v1] > 0; j++) {
int v2 = vertex2.get(j);
if (degree[v2] > 0) {
System.out.print(Math.min(v1, v2) + 1);
System.out.print(" ");
System.out.println(Math.max(v1, v2) + 1);
degree[v1]--;
degree[v2]--;
}
}
}
}
}