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()