510 2C
#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+5;
const int inf=1e9+5;
int n,a[maxn],cnt;
vector<int>vec;
int main()
{
cin>>n;
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
int tem=-inf,pos;
cnt=0;
for(int i=1; i<=n; i++)
{
if(a[i]==0)
vec.push_back(i);
if(a[i]<0)
{
if(a[i]>tem)
{
tem=a[i];
pos=i;
}
cnt++;
}
}
if(cnt&1)
{
if(vec.size()==n-1)
{
for(int i=1; i<vec.size(); i++)
printf("1 %d %d\n",vec[i],pos);
printf("2 %d\n",pos);
}
else
{
for(int i=0; i<vec.size(); i++)
printf("1 %d %d\n",vec[i],pos);
printf("2 %d\n",pos);
int tem;
for(int i=1; i<=n; i++)
{
if(a[i]!=0&&i!=pos)
{
tem=i;
break;
}
}
for(int i=1; i<=n; i++)
{
if(i!=pos&&a[i]!=0&&i!=tem)
printf("1 %d %d\n",i,tem);
}
}
}
else
{
if(vec.size()==n)
{
for(int i=2; i<vec.size(); i++)
printf("1 %d %d\n",vec[i],vec[1]);
printf("2 %d\n",vec[1]);
return 0;
}
for(int i=1; i<vec.size(); i++)
{
printf("1 %d %d\n",vec[i],vec[0]);
}
if(!vec.empty())
printf("2 %d\n",vec[0]);
int tt;
for(int i=1; i<=n; i++)
{
if(a[i]!=0)
{
tt=i;
break;
}
}
for(int i=tt+1; i<=n; i++)
{
if(a[i]!=0)
printf("1 %d %d\n",i,tt);
}
}
return 0;
}