#include <bits/stdc++.h>
using namespace std;
long long maxi = LLONG_MIN;
long long mini = LLONG_MAX;
void fast() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
}
long long t, i, j, k, n, temp, flag, ans, m;
int main() {
  cin >> n;
  vector<long long> a(n + 1);
  long long ne = 0, z = 0, npos = -1, zpos = -1;
  long long minne = LLONG_MAX;
  vector<long long> za, na, pa;
  for (i = 1; i <= n; i++) {
    cin >> a[i];
    if (a[i] < 0) {
      if (abs(a[i]) < minne) {
        minne = abs(a[i]);
        npos = i;
      }
      na.push_back(i);
      ne++;
    }
    if (a[i] == 0) {
      z++;
      zpos = i;
      za.push_back(i);
    }
    if (a[i] > 0) {
      pa.push_back(i);
    }
  }
  if (z == 0) {
    vector<long long> v;
    if (ne & 1) {
      for (i = 1; i <= n; i++) {
        if (i != npos) {
          v.push_back(i);
        } else {
          cout << 2 << ' ' << i << '\n';
        }
      }
    } else {
      for (i = 1; i <= n; i++) {
        v.push_back(i);
      }
    }
    for (i = 1; i < v.size(); i++) {
      cout << 1 << ' ' << v[i - 1] << ' ' << v[i] << '\n';
    }
  } else {
    vector<long long> v;
    for (i = 1; i < za.size(); i++) {
      cout << 1 << ' ' << za[i - 1] << ' ' << za[i] << '\n';
    }
    if (ne & 1) {
      cout << 1 << ' ' << npos << ' ' << za[za.size() - 1] << '\n';
      if (n - z != 1) cout << 2 << ' ' << za[za.size() - 1] << '\n';
      for (i = 1; i <= n; i++) {
        if (a[i] != 0 && i != npos) {
          v.push_back(i);
        }
      }
    } else {
      if (n - z != 0) cout << 2 << ' ' << za[za.size() - 1] << '\n';
      for (i = 1; i <= n; i++) {
        if (a[i] != 0) {
          v.push_back(i);
        }
      }
    }
    for (i = 1; i < v.size(); i++) {
      cout << 1 << ' ' << v[i - 1] << ' ' << v[i] << '\n';
    }
  }
  return 0;
}
