#include<stdio.h>
int main() {
int n;//参赛学校数
int i,j,k;//i:学校编号、j:队编号、k:人在队中编号
scanf("%d",&n);
int a[n];//记录每个学校的参赛队伍数
for(i=0; i<n; i++) {
scanf("%d",&a[i]);
}
int max=a[0];//构造三维数组b[i][j][k]其中j为最大队数
for(i=0; i<n; i++) {
if(max<a[i]) {
max=a[i];
}
}
int b[n][max][10];
for(i=0; i<n; i++) { //数组元素初始化为-1
for(j=0; j<max; j++) {
for(k=0; k<10; k++) {
b[i][j][k]=-1;
}
}
}
int cnt=1;//序号
int mask=-1;
for(j=0; j<max; j++) {//每个学校的第j队
for(k=0; k<10; k++) {// 每个学校j队的第k个人
for(i=0; i<n; i++) {//学校之间循环
if(a[i]>j) {//当某学校的队伍数符合条件时,进行排序
b[i][j][k]=cnt;
cnt++;
if(i==mask) {//只剩一个学校时,排序方式
b[i][j][k]=cnt++;
}
mask=i;
}
}
}
}
for(i=0; i<n; i++) {//输出
printf("#%d\n",i+1);
for(j=0; j<a[i]; j++) {
for(k=0; k<10; k++) {
printf("%d ",b[i][j][k]);
}
printf("\n");
}
}
return 0;
}