// editor2
#include<stdio.h>
#include<stdlib.h>

typedef struct Stack{
    int top;
}Stack;

typedef struct Queue{
    int front, rear;
}Queue;

Stack *stack=(Stack*)malloc(sizeof(Stack));
stack->top=-1;

Queue *queue=(Queue*)malloc(sizeof(Queue));
queue->front=queue->rear=-1;

int **initGraph(int v){
    int **graph=(int**)calloc(v, sizeof(int*));
    for(int i=0;i<v;i++){
        graph[i]=(int*)calloc(v, sizeof(int));
    }
    return graph;
}

int *initArray(int *array, int n){
    return (int*)calloc(n, sizeof(int));
}

void push(int *stack, int data){
    
}

int pop(int *stack){
    
}

void enQueue(int *queue, int data){
    
}

int deQueue(int *queue){
    
}

void DFS(int source, int **graph, int *visited, int V){
    
}

void BFS(int source, int **graph, int *visited, int V){
    
}

int main(){
    int V, E, u, v, w;
    scanf("%d%d", &V, &E);
    if(V<0||E<0){
        printf("Invalid input");
        return 0;
    }
    int **graph=initGraph(V);
    for(int i=0;i<E;i++){
        scanf("%d%d%d", &u, &v, &w);
        graph[u][v]=w;
    }
    int *visited=initArray(visited, V);
    for(int i=0;i<V;i++){
        for(int j=0;j<V;j++){
            printf("%d ", graph[i][j]);
        }
        printf("\n");
    }
    return 0;
}