#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] << " ";             
}