#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
#include<string>
#include<strstream>
#include<strstream>
#include <sstream>
#include<vector>
#include<set>
#include<map>
#include<queue>
#include<assert.h>
#include<unordered_map>
#include<iomanip>
using namespace std;
const int nmax=100+5;
int maxcol=60;
string f[nmax];
int main()
{
int N,M;
while(scanf("%d",&N)!=EOF&&N){
M=0;
for(int i=0;i<N;++i){
cin>>f[i];
M=max(M,(int)f[i].size());
}
sort(f,f+N);
cout.setf(ios::left);//设置setw左对齐输出
int col=(maxcol+2)/(M+2),row=ceil(N*1.0/col);
for(int i=0;i<maxcol;++i)printf("-");printf("\n");
for(int i=0;i<row;++i){
for(int j=0;j<col;++j){
int idx=j*row+i;
if(idx<N){
if(j+1==col)cout<<setw(M)<<f[idx];
else cout<<setw(M+2)<<f[idx];
}
}
cout<<endl;
}
}
return 0;
}