#include <iostream>
#include <vector>
using namespace std;
bool dfs(const int& first, const int& sum, const int& target, const int& n, const vector<int>& d, vector<int>& v1, vector<int>& v2){
if(sum == target){
if(first != n){
for(int i=first; i<n; ++i){
v2.emplace_back(i+1);
}
}
return true;
}else if(sum > target){
return false;
}
for(int i=first; i<n; ++i){
v1.emplace_back(i+1);
if(dfs(i+1, sum+d[i], target, n, d, v1, v2)){
return true;
}else{
v1.pop_back();
v2.emplace_back(i+1);
if (dfs(i + 1, sum, target, n, d, v1, v2)) {
return true;
}
v2.pop_back();
return false;
}
}
return false;
}
int main() {
int n;
cin >> n;
vector<int> d(n);
int sum = 0;
for(int i=0; i<n; ++i){
cin >> d[i];
sum += d[i];
}
if(sum%2==1){
cout << -1 << endl;
return 0;
}
vector<int> v1, v2;
if(!dfs(0, 0, sum/2, n, d, v1, v2)){
cout << -1 << endl;
return 0;
}
cout << sum/2 << endl;
int i = 0, j = 0;
int n1 = v1.size();
int n2 = v2.size();
while(i < n1 && j < n2){
cout << v1[i] << ' ' << v2[j] << endl;
d[v1[i]-1] --, d[v2[j]-1] --;
if (d[v1[i]-1] == 0) i ++;
if (d[v2[j]-1] == 0) j ++;
}
return 0;
}
// 64 位输出请用 printf("%lld")