#include<stdio.h>#include<stdlib.h>#include<math.h>intcomp(constvoid*a,constvoid*b){return*(int*)b -*(int*)a;}intmain(){int N, m, n, num[10000];int i, j, k,level;scanf("%d",&N);for(i =0; i < N; i++)scanf("%d", num + i);qsort(num, N,sizeof(int), comp);for(n =sqrt((double)N);!(n >0&& N % n ==0); n--)continue;
m = N / n;int matrix[m][n];
level = n /2+ n %2;for(i =0, k =0; i < level; i++){for(j = i; k <= N -1&& j <= n - i -1; j++)
matrix[i][j]= num[k++];for(j = i +1; k <= N -1&& j <= m - i -2; j++)
matrix[j][n - i -1]= num[k++];for(j = n - i -1; k <= N -1&& j >= i; j--)
matrix[m - i -1][j]= num[k++];for(j = m -2- i; k <= N -1&& j >= i +1; j--)
matrix[j][i]= num[k++];}for(i =0; i < m; i++)for(j =0; j < n; j++)printf("%d%c", matrix[i][j], j != n -1?' ':'\n');return0;}