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 PHP (5.6.30) (judge verdict: Wrong Answer)

<?php
error_reporting(0);
//$A = explode(" ",trim(fgets(STDIN)));
//list($N,$K) = explode(" ",trim(fgets(STDIN)));
$N = trim(fgets(STDIN));
$A = explode(" ",trim(fgets(STDIN)));
$low = min($A);
$lowkey = array_search($low,$A);
$high = max($A);
$highkey = array_search($high,$A);
$B = $A;
//どんどん増やすかどんどん減らすかのどちらか？
$sousa=array();
if ($high<0) {
  $res = herasu($A,$N,$low,$lowkey);
}
else {
  $res = fuyasu($A,$N,$high,$highkey);
}
if (chk($res)) {
  printf("%d\n",count($sousa));
  foreach($sousa as $s) {
    printf("%s\n",$s);
  }
}

function chk($ary) {
  $len = count($ary);
  for($i=0;$i<$len-1;$i++) {
    if ($ary[$i]>$ary[$i+1]) return false;
  }
  return true;
}
function herasu($A,$N,$low,$lowkey) {
  global $sousa;
  $i=0;
  while(1) {
    if ($A[$i]>$A[$i+1]) {
      $sousa[]=sprintf("%d %d",$lowkey+1 , $i + 1);
      $A[$i]+=$low;
      if ($A[$i]<$low) {
        $low = $A[$i];
        $lowkey = $i;
      }
    }
    else {
      $i++;
    }
    if ($i==$N-1) break;
  }
  return $A;
}
function fuyasu($A,$N,$high,$highkey) {
  global $sousa;
$i=0;
while(1) {
  if ($A[$i]>$A[$i+1]) {
    $sousa[]=sprintf("%d %d",$highkey+1 , $i + 2);
    $A[$i+1]+=$high;
    if ($A[$i+1]>$high) {
      $high = $A[$i+1];
      $highkey = $i+1;
    }
  }
  else {
    $i++;
  }
  if ($i==$N-1) break;
}
return $A;
}