from math import inf

def solved():
    n = int(input())
    degree = [0] + list(map(int, input().split()))

    k = sum(degree)
    if k % 2== 1:
        print(-1)
        return 
    k //= 2
    dp = [[-inf for _ in range(k+1)] for _ in range(n+1)]
    dp[0][0] = 0
    for i in range(1, n+1):
        for j in range(1, k+1):
            dp[i][j] = dp[i-1][j]
            if j >= degree[i]:
                dp[i][j] = max(dp[i][j], dp[i-1][j-degree[i]]+1)
    if dp[-1][-1] <= 0:
        print(-1)
        return 
    ni, nj = n, k
    v1, v2 = [], []
    while ni > 0:
        if dp[ni][nj] == dp[ni-1][nj]:
            v2.append(ni)
        else:
            v1.append(ni)
            nj -= degree[ni]
        ni -= 1
    print(k)
    i, j = 0, 0
    while i < len(v1) and j < len(v2):
        print(f"{v1[i]} {v2[j]}")
        degree[v1[i]] -= 1
        degree[v2[j]] -= 1
        if degree[v1[i]] == 0:
            i += 1
        if degree[v2[j]] == 0:
            j += 1
    
                    
            

if __name__ == "__main__":
    solved()