#define Max 1000
main()
{
typedef struct {
int i,j,elem;
}Triple;
typedef struct {
Triple date[Max+1];
int hang,lie,no;
}TSMatrix;
int k,col,q,num[50],copt[50];
TSMatrix M,T;
scanf("%d %d %d",&M.hang,&M.lie,&M.no);
for(k=1;k<=M.no;k++)
scanf("%d %d %d",&(M.date[k].i),&(M.date[k].j),&(M.date[k].elem));
T.hang=M.lie; T.lie=M.hang; T.no=M.no;
if(T.no) {
for(col=1;col<=M.lie;col++)
num[col]=0;
for(col=1;col<=M.lie;col++)
++num[M.date[col].j];
copt[1]=1;
for(col=2;col<=M.lie;col++)
copt[col]=copt[col-1]+copt[num-1];
for(k=1;k<=M.lie;k++) {
col=M.date[k].j;
q=copt[col];
T.date[q].i=M.date[k].j;
T.date[q].j=M.date[k].i;
T.date[q].elem=M.date[k].elem;
copt[col]++;
}
}
printf("num");
for(k=1;k<M.lie;k++)
printf(" %d",num[k]);
printf(" %d\n",num[M.lie]);
printf("copt");
for(k=1;k<M.lie;k++)
printf(" %d",copt[k]);
printf(" %d\n",copt[M.lie]);
for(k=1;k<T.no;k++)
printf("%d %d %d\n",T.date[k].i,T.date[k].j,T.date[k].elem);
}