#include<iostream>
using namespace std;
typedef struct{
int weight;
int p,lch,rch;
}htnode,*huffman;
int select(huffman ht,int n,int &s1,int &s2 ){
int i,j,s1w,s2w;
s1w=9999;
s2w=9999;
for(i=1;i<n;i++){
if(ht[i].weight <s1w&&ht[i].p==0 ){
s1w=ht[i].weight ;
s1=i;
}
}
for(j=1;j<n;j++){
if(j==s1){
continue;
}
if(ht[j].weight<s2w&&ht[j].p==0 ){
s2w=ht[j].weight ;
s2=j;
}
}
return s1,s2;
}
void create(huffman &ht,int n){
int i,j,s1,s2;
//if(n<=1) return error;
int m=2*n-2;
ht=new htnode[m];
for(i=1;i<m;i++){
ht[i].lch=0;
ht[i].rch=0;
ht[i].p=0;
}
for(i=1;i<n;i++) cin>>ht[i].weight ;
for(i=n;i<m;i++){
select(ht,n,s1,s2);
n++;
ht[s1].p =i;
ht[s2].p =i;
ht[i].lch =s1;
ht[i].rch =s2;
ht[i].weight =ht[s1].weight+ht[s2].weight ;
}
}
int main(){
huffman ht;
int n,i;
scanf("%d",&n);
create(ht,n+1);
for(i=1;i<2*n;i++){
printf("%d ",i);
printf("%d ",ht[i].weight );
printf("%d ",ht[i].lch );
printf("%d ",ht[i].rch );
printf("%d ",ht[i].p );
printf("\n" );
}
return 0;
}