#include <bits/stdc++.h>
using namespace std;
struct data {
  long long int a;
  int idx;
};
bool cmp(data p, data q) { return p.a < q.a; }
int main() {
  data p[200003];
  int n, i, j;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) {
    cin >> p[i].a;
    p[i].idx = i;
  }
  sort(p + 1, p + n + 1, cmp);
  int u = 0, v = 0, k = 0, count[3] = {0};
  for (i = 1; i <= n; i++) {
    if (p[i].a < 0) {
      u = i;
      count[0]++;
    }
    if (p[i].a == 0) {
      count[1]++;
      v = i;
    }
    if (p[i].a > 0) {
      count[2]++;
      k = i;
    }
  }
  if (count[0] > 0) {
    if (count[0] % 2 == 0) {
      for (i = 1; i <= u - 1; i++) printf("1 %d %d\n", p[i].idx, p[i + 1].idx);
      if (count[1] > 0) {
        for (i = u + 1; i < v; i++) printf("1 %d %d\n", p[i].idx, p[i + 1].idx);
        printf("2 %d\n", p[v].idx);
        if (count[2] > 0) {
          for (i = v + 1; i < k; i++)
            printf("1 %d %d\n", p[i].idx, p[i + 1].idx);
          printf("1 %d %d\n", p[u].idx, p[k].idx);
        }
      } else {
        if (count[2] > 0) {
          for (i = u + 1; i < k; i++)
            printf("1 %d %d\n", p[i].idx, p[i + 1].idx);
          printf("1 %d %d\n", p[u].idx, p[k].idx);
        }
      }
    } else {
      if (count[0] > 1) {
        for (i = 1; i < u - 1; i++) printf("1 %d %d\n", p[i].idx, p[i + 1].idx);
        if (count[1] > 0) {
          printf("1 %d %d\n", p[u].idx, p[u + 1].idx);
          for (i = u + 1; i < v; i++)
            printf("1 %d %d\n", p[i].idx, p[i + 1].idx);
          printf("2 %d\n", p[v].idx);
          if (count[2] > 0) {
            for (i = v + 1; i < k; i++)
              printf("1 %d %d\n", p[i].idx, p[i + 1].idx);
            if (count[0] > 1) printf("1 %d %d\n", p[u - 1].idx, p[k].idx);
          }
        } else {
          if (count[2] > 0) {
            printf("2 %d\n", p[u].idx);
            for (i = u + 1; i < k; i++)
              printf("1 %d %d\n", p[i].idx, p[i + 1].idx);
            if (count[0] > 1) printf("1 %d %d\n", p[u - 1].idx, p[k].idx);
          } else {
            if (count[0] > 1) printf("2 %d\n", p[u].idx);
          }
        }
      } else {
        if (count[1] > 0) {
          printf("1 %d %d\n", p[u].idx, p[u + 1].idx);
          for (i = u + 1; i < v; i++)
            printf("1 %d %d\n", p[i].idx, p[i + 1].idx);
          if (count[2] > 0) {
            printf("2 %d\n", p[v].idx);
            for (i = v + 1; i < k; i++)
              printf("1 %d %d\n", p[i].idx, p[i + 1].idx);
            if (count[0] > 1) printf("1 %d %d\n", p[u - 1].idx, p[k].idx);
          }
        } else {
          if (count[2] > 0) {
            printf("2 %d\n", p[u].idx);
            for (i = u + 1; i < k; i++)
              printf("1 %d %d\n", p[i].idx, p[i + 1].idx);
            if (count[0] > 1) printf("1 %d %d\n", p[u - 1].idx, p[k].idx);
          }
        }
      }
    }
  } else {
    if (count[1] > 0) {
      for (i = 1; i < v; i++) printf("1 %d %d\n", p[i].idx, p[i + 1].idx);
      if (count[2] > 0) {
        printf("2 %d\n", p[v].idx);
        for (i = v + 1; i < k; i++) printf("1 %d %d\n", p[i].idx, p[i + 1].idx);
      }
    } else {
      if (count[2] > 0) {
        for (i = 1; i < n; i++) printf("1 %d %d\n", p[i].idx, p[i + 1].idx);
      }
    }
  }
  return 0;
}
