#include <stdio.h>
#include <stdlib.h>

#define MAX 100

// Graph structure
typedef struct {
    int n;                // number of vertices
    int adj[MAX][MAX];    // adjacency matrix
} Graph;

// Function to initialize graph
void initGraph(Graph *g, int n) {
    g->n = n;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {#include <stdio.h>
#include <stdlib.h>

int main() {
    int n, e;
    scanf("%d %d", &n, &e);

    if (n < 1 || n > 100 || e < 0 || e > n * (n - 1)) {
        printf("Invalid input");
        return 0;
    }

    int matrix[100][100] = {0};

    for (int i = 0; i < e; i++) {
        int u, v, w;
        if (scanf("%d %d %d", &u, &v, &w) != 3) {
            printf("Invalid input");
            return 0;
        }
        if (u < 1 || u > n || v < 1 || v > n || w < 0) {
            printf("Invalid input");
            return 0;
        }
        matrix[u-1][v-1] = w;
    }

    // ✅ Proper matrix print
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            printf("%d", matrix[i][j]);
            if (j != n - 1) printf(" ");
        }
        printf("\n");
    }

    return 0;
}
            g->adj[i][j] = 0;
        }
    }
}

// Function to add edge
int addEdge(Graph *g, int u, int v, int w) {
    if (u < 1 || u > g->n || v < 1 || v > g->n || w < 0) {
        return 0; // invalid
    }
    g->adj[u-1][v-1] = w; // directed edge
    return 1;
}

// Function to print graph matrix
void printGraph(Graph *g) {
    for (int i = 0; i < g->n; i++) {
        for (int j = 0; j < g->n; j++) {
            printf("%d", g->adj[i][j]);
            if (j != g->n - 1) printf(" ");
        }
        printf("\n");
    }
}

int main() {
    int n, e;
    scanf("%d %d", &n, &e);

    if (n < 1 || n > MAX || e < 0 || e > n * (n - 1)) {
        printf("Invalid input");
        return 0;
    }

    Graph g;
    initGraph(&g, n);

    for (int i = 0; i < e; i++) {
        int u, v, w;
        if (scanf("%d %d %d", &u, &v, &w) != 3 || !addEdge(&g, u, v, w)) {
            printf("Invalid input");
            return 0;
        }
    }

    printGraph(&g);

    return 0;
}