#include <iostream>
#include <vector>
#include<algorithm>
using namespace std;
struct bo
{
int xu;
int shu;
};
bool zhao(bo a,bo b)
{
return a.shu < b.shu;
}
int main()
{
int m,s;cin >> m;
vector<bo>tu(m);
for (int i = 0;i < m;i++)
{
cin >> tu[i].shu;tu[i].xu = i + 1;
}
sort(tu.begin(), tu.end(),zhao);
int num = 0;
for (int i = 0;i < m;i++)
{
num += tu[i].shu;
}
if (num % 2 != 0)
{
cout << -1;
return 0;
}
int tar = num / 2, a = 0, b = 0,zhui=0,zhao=0;
while(b<m)
{
if (zhui == tar)
{
zhao = 1;
break;
}
zhui += tu[b].shu;
if (zhui == tar)
{
zhao = 1;
break;
}
if (zhui < tar)b++;
while(zhui > tar)
{
zhui += -tu[a].shu;
a++;
}
}
if (zhao)
{
vector<int>combo1;
vector<int>combo2;
for (int i = a;i <= b;i++)
{
for (int j = tu[i].shu;j > 0;j--)
combo1.push_back(tu[i].xu);
}
for (int i = 0;i < a;i++)
{
for (int j = tu[i].shu;j > 0;j--)
combo2.push_back(tu[i].xu);
}
for (int i = b+1;i <m;i++)
{
for (int j = tu[i].shu;j > 0;j--)
combo2.push_back(tu[i].xu);
}
cout << combo1.size() << endl;
for (int i = 0;i < combo1.size();i++)
{
cout << combo1[i] <<" "<< combo2[i] << endl;
}
}
else cout << -1;
}