#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#define MAXSIZE 20
int show(int data[],int size){
for(int i=0; i<size;i++){
printf("%d\t",data[i]);
}
printf("\n");
}
int jspx(int n,int data[],int d){
int m=data[1];
int base=1;
//int t[MAXSIZE];
int* t=(int*)malloc(sizeof(int)*n); //临时存放数组的空间
while(m/base>0){
printf("\n");
int bucket[MAXSIZE]={0};
for(int i=0;i<n;i++){
bucket[data[i]/base%10]++;
}
for(int i=1;i<10;i++){
bucket[i]+=bucket[i-1];
}
for(int j=n-1;j>=0;j--){
t[bucket[data[j]/base%10]-1] =data[j];
bucket[data[j]/base%10]--;
}
for(int x=0;x<n;x++){
data[x]=t[x];
}
base*=10;
}
show(data,n);
free(t);
}
int main(){
int n,d;
scanf("%d ",&n);
int data[1000]={0};
for(int i=0;i<n;i++){
scanf("%d",&data[i]);
}
scanf("%d",&d);
//show(data,n);
jspx(n,data,d);
return 0;
}