#include<iostream>#include<algorithm>#include<cmath>#include<vector>usingnamespace std;boolcmp(int a,int b){return a > b;}intmain(){int N, m, n;
cin >> N;
vector<int>a(N);for(int i =0; i < N; i++)
cin >> a[i];sort(a.begin(), a.end(), cmp);//找出符合条件的m和n;for(int j =sqrt(N); j >=1; j--){if(N%j ==0){
m = N / j;
n = j;break;}}
vector<vector<int>>b(m, vector<int>(n));//初始化二维数组全部赋值为0int t =0;//用来记录输出a数组的第几个int level = m /2+ m %2;for(int i =0; i < level; i++)//外层for循环{for(int j = i; j <= n -1- i && t <= N -1; j++)//输出内层第一个for循环
b[i][j]= a[t++];for(int j = i +1; j < m -1- i && t <= N -1; j++)//输出内层第二个for循环
b[j][n -1- i]= a[t++];for(int j = n -1- i; j >= i && t <= N -1; j--)//输出内层第三个for循环
b[m -1- i][j]= a[t++];for(int j = m -2- i; j >= i +1&& t <= N -1; j--)//输出内层第四个for循环
b[j][i]= a[t++];}for(int i =0; i < m; i++){for(int j =0; j < n; j++){
cout << b[i][j];if(j != n -1)
cout <<" ";}
cout << endl;}return0;}