#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int cmp(const void *a, const void *b) {
return *(int *)b - *(int *)a;
}
int main(){
int N, n, m;
scanf("%d", &N);
int arr[N];
for (int i = 0; i < N; i++){
scanf("%d", &arr[i]);
}
qsort(arr, N, sizeof(int), cmp);
for (int i = sqrt((double)N); i >= 1; i--) {
if (N % i == 0) {
n = i;
break;
}
}
m = N / n;
int matrix[m][n];
int urow = 0, drow = m - 1, lcol = 0, rcol = n - 1, i = 0;
for (int k = n / 2 + n % 2; k >= 0; k--) {
for (int j = lcol; j <= rcol && i != N; j++, i++) {
matrix[urow][j] = arr[i];
}
urow++;
for (int j = urow; j <= drow && i != N; j++, i++) {
matrix[j][rcol] = arr[i];
}
rcol--;
for (int j = rcol; j >= lcol && i != N; j--, i++) {
matrix[drow][j] = arr[i];
}
drow--;
for (int j = drow; j >= urow && i != N; j--, i++) {
matrix[j][lcol] = arr[i];
}
lcol++;
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (j == n - 1) {
printf("%d\n", matrix[i][j]);
} else {
printf("%d ", matrix[i][j]);
}
}
}
return 0;
}