#include <algorithm>
int bucket[2][100000];
void sort(unsigned *a, int n) {
int base = 1 ,len = 1;
for(rg int i = 1 ; i <= n ; ++i){
while(a[i] >= base){
len++;
base <<= 1;
}
}
base = 0;
int arr[MX];
while(len--){
int cnt[12] = {0};
for(rg int i = 1 ; i <= n ; ++i){
int tmp = (a[i] >> base) & 1;
bucket[tmp][++cnt[tmp]] = a[i];
}
for(rg int i = 0 ,k = 0 ; i < 2 ; ++i){
for(rg int j = 1 ; j <= cnt[i] ; ++j){
a[++k] = bucket[i][j];
}
}
base++;
}
}