#include <iostream>
#include <stdio.h>
using namespace std;
int findMax(int a[],int len){
int max=a[0];
for(int i=0;i<len;++i){
if(a[i]>max){
max=a[i];
}
}
return max;
}
int Digit(int num){
int k=0;
while(num!=0){
num/=10;
k++;
}
return k;
}
void clear(int b[][20],int len){
for(int i=0;i<len;++i){
for(int j=0;j<len;++j){
b[i][j]=0;
}
}
}
void printArray(int a[], int len) {
for (int i = 0; i < len; i++) {
cout << a[i] <<" ";
}
}
void radixSort(int a[],int len){
int b[10][20]={};
int max=findMax(a,len);
int k=Digit(max);
int num;
int y=1;
for(int i=1;i<=k;i++){
clear(b,9);
for(int j=0;j<len;j++){
num=a[j]/y%10;
b[num][++b[num][0]] = a[j];
}
int a_len=0;
for(int n=0;n<=9;n++){
for(int m=1;m<=b[n][0];m++){
a[a_len++]=b[n][m];
}
}
printArray(a,len);
cout<<endl;
y*=10;
}
}
int main() {
int a[10] = {789,36,26,27,2,46,4,19,50,48};
int size=sizeof(a)/sizeof(int);
radixSort(a,size);
return 0;
}