Problem:
Score : 600 points

Problem Statement

Snuke has an integer sequence, a, of length N. The i-th element of a (1-indexed) is a_{i}.

He can perform the following operation any number of times:

Operation: Choose integers x and y between 1 and N (inclusive), and add a_x to a_y.

He would like to perform this operation between 0 and 2N times (inclusive) so that a satisfies the condition below. Show one such sequence of operations.
It can be proved that such a sequence of operations always exists under the constraints in this problem.

Condition: a_1 \leq a_2 \leq ... \leq a_{N}

Constraints

2 \leq N \leq 50

-10^{6} \leq a_i \leq 10^{6}

All input values are integers.

Input

Input is given from Standard Input in the following format:

N
a_1 a_2 ... a_{N}

Output

Let m be the number of operations in your solution. In the first line, print m.
In the i-th of the subsequent m lines, print the numbers x and y chosen in the i-th operation, with a space in between.
The output will be considered correct if m is between 0 and 2N (inclusive) and a satisfies the condition after the m operations.

Sample Input 1

3
-2 5 -1

Sample Output 1

2
2 3
3 3

After the first operation, a = (-2,5,4).

After the second operation, a = (-2,5,8), and the condition is now satisfied.

Sample Input 2

2
-1 -3

Sample Output 2

1
2 1

After the first operation, a = (-4,-3) and the condition is now satisfied.

Sample Input 3

5
0 0 0 0 0

Sample Output 3

0

The condition is satisfied already in the beginning.

Solution in Python (3.4.3) (judge verdict: Wrong Answer)

n=int(input())
arr=list(map(int,input().split()))
arr=[[arr[i],i+1] for i in range(n)]
mins=0
maxs=0
for i in range(n):
  mins=min(mins,arr[i][0])
  maxs=max(maxs,arr[i][0])
cnt=0
if maxs<0:
  for i in range(n):
    arr[i][0]+=10**9
elif 0<=mins:
  pass
else:
  if abs(mins)>maxs:
    for i in range(n):
      arr[i][0]+=10**9
      if arr[i][0]>0:
        arr[i][0]+=mins
        cnt+=1
  else:
    for i in range(n):
      if arr[i][0]<0:
        arr[i][0]+=maxs
        cnt+=1
rows=[]
tmp=[[arr[0][0],arr[0][1]]]
for i in range(1,n):
  if arr[i-1][0]<=arr[i][0]:
    tmp.append([arr[i][0],arr[i][1]])
  else:
    rows.append(tmp)
    tmp=[[arr[i][0],arr[i][1]]]
if len(tmp)!=0:
  rows.append(tmp)
ans=[]
for i in range(len(rows)-1):
  if len(rows[i])==1:
    if len(rows[i+1])==1:
      rows[i+1][0][0]+=rows[i][0][0]
      ans.append([rows[i][0][1],rows[i+1][0][1]])
for i in range(len(rows)-1):
  if len(rows[i])==1:
    if len(rows[i+1])==1:
      continue
    else:
      for j in range(len(rows[i+1])):
        rows[i+1][j][0]+=rows[i][0][0]
        ans.append([rows[i][0][1],rows[i+1][j][1]])
  else:
    if len(rows[i+1])==1:
      for j in range(i+1,len(rows)):
        if len(rows[j])==1:
          rows[j][0][0]+=rows[i][-1][0]
          ans.append([rows[i][-1][1],rows[j][0][1]])
        else:
          break
    else:
      for j in range(len(rows[i+1])):
        rows[i+1][j][0]+=rows[i][-1][0]
        ans.append([rows[i][-1][1],rows[i+1][j][1]])
print(cnt+len(ans))
for i in range(len(ans)):
  print(*ans[i])