#include <iostream>
using namespace std;
void countingsort(unsigned *a, int n, int e){
int dum [n];
for(int i = 0; i < n; i++){
dum[i] = a[i];
}
int count [256];
for(int i = 0; i < 256; i++){
count[i] = 0;
}
for(int i = 0; i < n; i++){
count[(a[i]/e)%256]++;
}
int d [256];
d[0] = 0;
for(int i = 1; i < 256; i++){
d[i] = d[i-1] + count[i-1];
}
for(int i = 0; i < n; i++){
a[d[(dum[i]/e) % 256]++] = dum[i];
}
}
void sort(unsigned *a, int n) {
int x = 1;
for(int i = 1; i < 4; i++){
countingsort(a, n, x);
x *= 256;
}
}