#include #include int main(void) { int n, i, j; scanf("%d", &n); int size = n * n + 1; int *v = malloc(size * sizeof(int)); v[0] = 0; for (i = 1; i < size; i++) { scanf("%d", &v[i]); } for (j = 2; j < size; j++) { int max = v[j]; i = j - 1; while (i > 0 && v[i] < max) { v[i + 1] = v[i]; i = i - 1; } v[i + 1] = max; } int **mat = malloc(n * sizeof(int*)); for (i = 0; i < n; i++) { mat[i] = calloc(n, sizeof(int)); } int ctr = 0; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { if (i != j) { mat[i][j] = v[n + 1 + ctr]; ctr++; } else { mat[i][j] = v[i + 1]; } } } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { printf("%d ", mat[i][j]); if ((j + 1) % n == 0) { printf("\n"); } } } return 0; }