/*
 0 12  9  0  0  0  0
 0  0  0  0  0  0  0
-3  0  0  0  0 14  0
 0  0 24  0  0  0  0
 0 18  0  0  0  0  0
15  0  0 -7  0  0  0
*/
#include <stdio.h>
#include <stdlib.h>
#define ROW 6
#define COL 7
#define V 8
typedef struct
{
    int i, j;
    int v;
}Node;
int main()
{
    int i, j, k, p, matrix[ROW][COL];
    Node ma[V+1]; Node mb[V+1];
    
    ma[0].i = ROW;
    ma[0].j = COL;
    ma[0].v = V;
    k = 1;
    for ( i = 0; i < ROW; i++ )
    {
        for ( j = 0; j < COL; j++ )
        {
            scanf( "%d", &matrix[i][j] );
            if ( matrix[i][j] )
            {
                ma[k].i = i + 1;
                ma[k].j = j + 1;
                ma[k].v = matrix[i][j];
                k++;
            }
        }
    }
    //转置前
    printf( "转置前:\n" );
    for ( i = 0; i <= V; i++ )
    {
        printf( "%2d %2d %2d", ma[i].i, ma[i].j, ma[i].v );
        putchar( '\n' );
    }
    putchar( '\n' );
    putchar( '\n' );
    
    mb[0].i = ma[0].j;
    mb[0].j = ma[0].i;
    mb[0].v = ma[0].v;
    k = 1;
    p = mb[0].v;
    for ( i = 1; i <= COL; i++ )
    {
        for ( j = 1; j <= p; j++ )
        {
            if ( ma[j].j == i )
            {
                mb[k].i = ma[j].j;
                mb[k].j = ma[j].i;
                mb[k].v = ma[j].v;
                k++;
            }
        }
    }
    //转置后
    printf( "转置后:\n" );
    for ( i = 0; i <= V; i++ )
    {
        printf( "%2d %2d %2d", mb[i].i, mb[i].j, mb[i].v );
        putchar( '\n' );
    }
    
    system( "pause" );
    return 0;
}