#include <bits/stdc++.h>
using namespace std;
// hàm sắp xếp nổi bọt giảm dần
void bbsort (int a[], int n) {
for (int i=0; i<n-1; i++) {
for (int j=0; j<n-i-1; j++) {
if (a[j]<a[j+1]) swap (a[j], a[j+1]);
}
}
}
// hàm tách số n thành mảng các chữ số (và trả về số chữ số của n) va luu số số 0 (zeros)
int split (int a[], int n, int dau, int &zeros) {
int i=0;
while (n>0) {
if (n%10==0) zeros++;
else {
// lưu giữ các chữ số theo dấu để dễ thao tác
a[i]=dau*n%10;
i++;
}
n/=10;
}
return i;
}
// ham tra ve max cua so n (bằng cách sắp xếp mảng các chữ số n)
int maxN (int n, int dau) {
int a[10005];
int zeros= 0, cs= split (a, abs(n), dau, zeros);
bbsort (a, cs);
int res=0;
// số dương để lớn nhất thì chỉ cần tạo số từ mảng đã được sắp xếp giảm dần rồi nhét các số 0 ở cuối
if (dau==1) {
for (int i=0; i<cs; i++) res=res*10+a[i];
for (int i=0; i<zeros; i++) res*=10;
}
// số âm để lớn nhất thì phải nhét toàn bộ số 0 vào chữ số bé thứ 2 (a[0])
else {
res= a[0];
for (int i=0; i<zeros; i++) res*=10;
for (int i=1; i<cs; i++) res=res*10+a[i];
}
return res;
}
int main () {
ios_base:: sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
int a[n];
for (int i=0; i<n; i++) cin >> a[i];
for (int i=0; i<n; i++) {
a[i]= maxN (a[i], (a[i]<0)? -1: 1);
}
bbsort (a, n);
for (int i=0; i<n; i++) cout << a[i] << " ";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vIGjDoG0gc+G6r3AgeOG6v3AgbuG7lWkgYuG7jXQgZ2nhuqNtIGThuqduCnZvaWQgYmJzb3J0IChpbnQgYVtdLCBpbnQgbikgewoJZm9yIChpbnQgaT0wOyBpPG4tMTsgaSsrKSB7CgkJZm9yIChpbnQgaj0wOyBqPG4taS0xOyBqKyspIHsKCQkJaWYgKGFbal08YVtqKzFdKSBzd2FwIChhW2pdLCBhW2orMV0pOwoJCX0KCX0KfQovLyBow6BtIHTDoWNoIHPhu5EgbiB0aMOgbmggbeG6o25nIGPDoWMgY2jhu68gc+G7kSAodsOgIHRy4bqjIHbhu4Egc+G7kSBjaOG7ryBz4buRIGPhu6dhIG4pIHZhIGx1dSBz4buRIHPhu5EgMCAoemVyb3MpCmludCBzcGxpdCAoaW50IGFbXSwgaW50IG4sIGludCBkYXUsIGludCAmemVyb3MpIHsKCWludCBpPTA7IAoJd2hpbGUgKG4+MCkgewoJCWlmIChuJTEwPT0wKSB6ZXJvcysrOwoJCWVsc2UgewoJCQkvLyBsxrB1IGdp4buvIGPDoWMgY2jhu68gc+G7kSB0aGVvIGThuqV1IMSR4buDIGThu4UgdGhhbyB0w6FjCgkJCWFbaV09ZGF1Km4lMTA7CgkJCWkrKzsKCQl9CgkJbi89MTA7Cgl9CglyZXR1cm4gaTsKfQoKLy8gaGFtIHRyYSB2ZSBtYXggY3VhIHNvIG4gKGLhurFuZyBjw6FjaCBz4bqvcCB44bq/cCBt4bqjbmcgY8OhYyBjaOG7ryBz4buRIG4pCmludCBtYXhOIChpbnQgbiwgaW50IGRhdSkgewoJaW50IGFbMTAwMDVdOwoJaW50IHplcm9zPSAwLCBjcz0gc3BsaXQgKGEsIGFicyhuKSwgZGF1LCB6ZXJvcyk7CgliYnNvcnQgKGEsIGNzKTsKCWludCByZXM9MDsKCS8vIHPhu5EgZMawxqFuZyDEkeG7gyBs4bubbiBuaOG6pXQgdGjDrCBjaOG7iSBj4bqnbiB04bqhbyBz4buRIHThu6sgbeG6o25nIMSRw6MgxJHGsOG7o2Mgc+G6r3AgeOG6v3AgZ2nhuqNtIGThuqduIHLhu5NpIG5ow6l0IGPDoWMgc+G7kSAwIOG7nyBjdeG7kWkKCWlmIChkYXU9PTEpIHsKCQlmb3IgKGludCBpPTA7IGk8Y3M7IGkrKykgcmVzPXJlcyoxMCthW2ldOwoJCWZvciAoaW50IGk9MDsgaTx6ZXJvczsgaSsrKSByZXMqPTEwOwoJfSAKCS8vIHPhu5Egw6JtIMSR4buDIGzhu5tuIG5o4bqldCB0aMOsIHBo4bqjaSBuaMOpdCB0b8OgbiBi4buZIHPhu5EgMCB2w6BvIGNo4buvIHPhu5EgYsOpIHRo4bupIDIgKGFbMF0pCgllbHNlIHsKCQlyZXM9IGFbMF07CgkJZm9yIChpbnQgaT0wOyBpPHplcm9zOyBpKyspIHJlcyo9MTA7CgkJZm9yIChpbnQgaT0xOyBpPGNzOyBpKyspIHJlcz1yZXMqMTArYVtpXTsJCgl9CglyZXR1cm4gcmVzOwp9CgppbnQgbWFpbiAoKSB7Cglpb3NfYmFzZTo6IHN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CgljaW4udGllKG51bGxwdHIpOwoJCglpbnQgbjsgY2luID4+IG47CglpbnQgYVtuXTsKCWZvciAoaW50IGk9MDsgaTxuOyBpKyspIGNpbiA+PiBhW2ldOwoJZm9yIChpbnQgaT0wOyBpPG47IGkrKykgewoJCWFbaV09IG1heE4gKGFbaV0sIChhW2ldPDApPyAtMTogMSk7Cgl9CgliYnNvcnQgKGEsIG4pOwoJZm9yIChpbnQgaT0wOyBpPG47IGkrKykgY291dCA8PCBhW2ldIDw8ICIgIjsgICAgICAgICAgICAgCn0=