#include <bits/stdc++.h>
using namespace std;
int n, flag, Id;
int arr[200001];
bool vis[200001];
vector<int> FuShuId;
vector<int> ZeroId;
vector<int> Delete;
int main() {
cin >> n;
for (int i = 1; i <= n; i++)
scanf("%d", &arr[i]);
for (int i = 1; i <= n; i++)
if (arr[i] < 0) FuShuId.push_back(i);
for (int i = 1; i <= n; i++)
if (arr[i] == 0) ZeroId.push_back(i);
for (int i = 1; i <= n; i++)
if (arr[i] > 0) flag = true;
if (FuShuId.size() & 1) {
int MinId = FuShuId[0];
for (int i = 1; i < FuShuId.size(); i++)
if (arr[FuShuId[i]] < arr[MinId])
MinId = FuShuId[i];
Delete.push_back(MinId);
}
for (int i : ZeroId) Delete.push_back(i);
for (int i = 1; i < Delete.size(); i++) cout << 1 << ' ' << Delete[i - 1] << ' ' << Delete[i] << '\n', vis[Delete[i - 1]] = true;
if(flag || (FuShuId.size() % 2 == 0 && FuShuId.size() > 0))cout << 2 << ' ' << Delete[Delete.size() - 1] << '\n';
vis[Delete[Delete.size() - 1]] = true;
Delete.clear();
for (int i = 1; i <= n; i++)
if (!vis[i]) Delete.push_back(i);
for (int i = 1; i < Delete.size(); i++) cout << 1 << ' ' << Delete[i - 1] << ' ' << Delete[i] << '\n', vis[Delete[i - 1]] = true;
}