#include<bits/stdc++.h>
using namespace std;
mt19937_64 rd(time(0));
int rand(int L, int R){
return L + rd() % (R - L + 1);
}
int n, arr[10000];
int random_bit(int i, int j){
int bit_arr[7] = {(i ^ j), (i & j), (i | j), (i & -i), (j & -j), (i & -j), (-i & j)};
return bit_arr[rand(0, 100) % 7];
}
void bitwise_sort(){
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
int minIndex = i - random_bit(i, j);
int maxIndex = i + random_bit(i, j);
minIndex = max(0, minIndex);
minIndex = min(n - 1, minIndex);
maxIndex = max(0, maxIndex);
maxIndex = min(n - 1, maxIndex);
if(arr[minIndex] < arr[maxIndex]) swap(arr[minIndex], arr[maxIndex]);
}
}
}
bool isSorted(int* arr, int length){
for(int i = 1; i < length; i++){
if(arr[i - 1] < arr[i]) return 0;
}
return 1;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n;
for(int i = 0; i < n; i++) cin >> arr[i];
while(!isSorted(arr, n)){
bitwise_sort();
}
for(int i = 0; i < n; i++) cout << arr[i] << ' ';
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCm10MTk5MzdfNjQgcmQodGltZSgwKSk7CmludCByYW5kKGludCBMLCBpbnQgUil7CiAgICByZXR1cm4gTCArIHJkKCkgJSAoUiAtIEwgKyAxKTsKfQoKaW50IG4sIGFyclsxMDAwMF07CgppbnQgcmFuZG9tX2JpdChpbnQgaSwgaW50IGopewogICAgaW50IGJpdF9hcnJbN10gPSB7KGkgXiBqKSwgKGkgJiBqKSwgKGkgfCBqKSwgKGkgJiAtaSksIChqICYgLWopLCAoaSAmIC1qKSwgKC1pICYgail9OwogICAgcmV0dXJuIGJpdF9hcnJbcmFuZCgwLCAxMDApICUgN107Cn0KCnZvaWQgYml0d2lzZV9zb3J0KCl7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKXsKICAgICAgICBmb3IoaW50IGogPSAwOyBqIDwgbjsgaisrKXsKICAgICAgICAgICAgaW50IG1pbkluZGV4ID0gaSAtIHJhbmRvbV9iaXQoaSwgaik7CiAgICAgICAgICAgIGludCBtYXhJbmRleCA9IGkgKyByYW5kb21fYml0KGksIGopOwoKICAgICAgICAgICAgbWluSW5kZXggPSBtYXgoMCwgbWluSW5kZXgpOwogICAgICAgICAgICBtaW5JbmRleCA9IG1pbihuIC0gMSwgbWluSW5kZXgpOwoKICAgICAgICAgICAgbWF4SW5kZXggPSBtYXgoMCwgbWF4SW5kZXgpOwogICAgICAgICAgICBtYXhJbmRleCA9IG1pbihuIC0gMSwgbWF4SW5kZXgpOwoKICAgICAgICAgICAgaWYoYXJyW21pbkluZGV4XSA8IGFyclttYXhJbmRleF0pIHN3YXAoYXJyW21pbkluZGV4XSwgYXJyW21heEluZGV4XSk7CiAgICAgICAgfQogICAgfQp9Cgpib29sIGlzU29ydGVkKGludCogYXJyLCBpbnQgbGVuZ3RoKXsKICAgIGZvcihpbnQgaSA9IDE7IGkgPCBsZW5ndGg7IGkrKyl7CiAgICAgICAgaWYoYXJyW2kgLSAxXSA8IGFycltpXSkgcmV0dXJuIDA7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCmludCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CgogICAgY2luID4+IG47CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSBjaW4gPj4gYXJyW2ldOwoKICAgIHdoaWxlKCFpc1NvcnRlZChhcnIsIG4pKXsKICAgICAgICBiaXR3aXNlX3NvcnQoKTsKICAgIH0KCiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSBjb3V0IDw8IGFycltpXSA8PCAnICc7CgogICAgcmV0dXJuIDA7Cn0K