Little Chris is bored during his physics lessons (too easy), so he has built a toy box to keep himself occupied. The box is special, since it has the ability to change gravity.

There are *n* columns of toy cubes in the box arranged in a line. The *i*-th column contains *a*<sub class="lower-index">*i*</sub> cubes. At first, the gravity in the box is pulling the cubes downwards. When Chris switches the gravity, it begins to pull all the cubes to the right side of the box. The figure shows the initial and final configurations of the cubes in the box: the cubes that have changed their position are highlighted with orange.

Given the initial configuration of the toy cubes in the box, find the amounts of cubes in each of the *n* columns after the gravity switch!
The first line of input contains an integer *n* (1 ≤ *n* ≤ 100), the number of the columns in the box. The next line contains *n* space-separated integer numbers. The *i*-th number *a*<sub class="lower-index">*i*</sub> (1 ≤ *a*<sub class="lower-index">*i*</sub> ≤ 100) denotes the number of cubes in the *i*-th column.
// the length if n is less than 100
// we can use greeedy, upto n to power 3
// #include <bits/stdc++.h>
// using namespace std;
// bool cmp(pair<int,int>a,pair<int,int>b){
// 	if(a.first<b.first and a.second>b.second){
// 		return a<b;
// 	}
// 	else{
// 		return a.first>b.first;
// 	}
// }
// int main(){
// 	int n;
// 	cin>>n;
// 	vector<pair<int,int>>v;
// 	for(int i=0;i<n;i++){
// 		int a, b;
// 		cin>>a>>b;
// 		v.push_back({a,b});
// 	}
// 	sort(v.begin(), v.end(),cmp);	
// 	for(int i=0;i<n;i++){
// 		if(v[0].first<v[i].first and v[0].second>v[i].second){
// 			cout<<"Happy Alex";
// 			exit(0);
// 		}
// 	}
// 	cout<<"Poor Alex";
// }

// #include <bits/stdc++.h>
// using namespace std;
// int main(){
// 	int n;
// 	cin>>n;
// 	vector<int>v;
// 	for(int i=0;i<n;i++){
// 		int b;
// 		cin>>b;
// 		v.push_back(b);
// 	}
// 	sort(v.begin(), v.end());
// 	int l=0;
// 	int r=1;
// 	int people=v[0];
// 	int cars=1;
// 	while(r!=n or l!=r){
// 		if(v[r]+v[l]<=4){
// 			r--;
// 			l++;
// 			people+=v[r]+v[l];
// 			if(v[l]+people<=4){
// 				l++;
// 				if(v[l]+people<=4){
// 				l++;
// 				}
// 			}
// 		}else{
// 			cars++;
// 			r--;
// 		}
// 	}
// 	cout<<cars;
// }

//new year candles
// #include <bits/stdc++.h>
// using namespace std;
// int left_over=0;
// int main(){
// 	int a,b;
// 	cin>>a>>b;
// 	int timeburnt=a;
// 	do{
// 		a=a/b;
// 		timeburnt+=a;
// 		left_over+=a%b;
// 	}while(a>=b);
// 	left_over+=a%b;
// 	cout<<left_over;
// 	//cout<<left_over;
// 	while(left_over>=b){
// 		left_over/=b;
// 		timeburnt+=left_over;
// 	}	
// 	cout<<timeburnt+left_over/b;


// 	//will have to use recursion 
// }


//maxprofit leetcode greedy
//just add up all the positive adjcent differences
// #include <bits/stdc++.h>
// using namespace std;
// #define ll long long
// int main(){
// 	int t;
// 	for(int i=0;i<t;i++){
// 		int a,b,c;
// 		cin>>a>>b>>c;
// 		multiset <int>s;
// 		if (a==b and b==c){
// 			cout<<"YES\n";
// 			break;
// 		}
// 		s.insert(a);
// 		s.insert(b);
// 		s.insert(c);
// 		auto f=s.begin();
// 		auto l=s.end();
// 		l--;
// 		s.insert(*l-*f);
// 		f=s.begin();
// 		l=s.end();
// 		if (*f==*l){
// 			cout<<"YES\n";
// 			break;
// 		}
// 		s.insert(*l-*f);
// 		f=s.begin();
// 		l=s.end();
// 		l--;
// 		if (*f==*l){
// 			cout<<"YES\n";
// 			break;
// 		}
// 		s.insert(*l-*f);
// 		f=s.begin();
// 		l=s.end();
// 		l--;
// 		if (*f==*l){
// 			cout<<"YES\n";
// 			break;
// 		}
// 		cout<<"NO\n";

// 	}
// }

// #include <bits/stdc++.h>
// using namespace std;
// #define ll long long
// int main(){
// 	freopen("cowqueue.in", "r", stdin);
// 	freopen("cowqueue.out", "w", stdout);
//     int n;
//     cin>>n;
//     vector<pair<int,int>>v;
//     for(int i=0;i<n;i++){
//         int a,b;
//         cin>>a>>b;
//         v.push_back({a,b});
//     }
//     sort(v.begin(),v.end());
//     int current_time=0;

//     for(int i=0;i<n;i++){
//         if(v[i].first>=current_time){
//             current_time=(v[i].second+v[i].first);
//         }else{
//             current_time+=v[i].second;
//         }
//     }
//     cout<<current_time;
// }



// #include <bits/stdc++.h>
// using namespace std;
// #define ll long long
// int main(){
// 	ll n;
//     cin>>n;
//     vector<ll>v;
//     for(ll i=0;i<n;i++){
//         ll a;
//         cin>>a;
//         v.push_back(a);
//     }
//     sort(v.begin(),v.end());
//     ll highest=0;
//     // for(ll i: v){
//     //     cout<<i<<" ";
//     // }cout<<"\n";
//     map<ll,ll>m;
//     vector<ll>p;
//     for(ll i=0;i<v.size();i++){
//         if(v[i]>highest){
//             highest=v[i];
//             // cout<<"highest "<<highest<<"n-i-1 "<<n-i<<" \n";
//             p.push_back(highest);
//             m[highest]=(n-i);
//         }
//     }
//     vector<pair<ll,ll>>fees;
//     for(auto i: p){
//         fees.push_back({m[i]*i,i});
//     }

//     // for(ll i:p){
//     //     cout<<i<<" ";
//     // }cout<<"\n";


// //    cout<<*max_element(fees.begin(),fees.end());
// //    for(auto i:fees){
// //        cout<<i<<" ";
// //    }
//     sort(fees.begin(),fees.end());
//     auto h=fees.end();
//     h--;
//     ll j=0;
//     for(int i=0;i<fees.size();i++){
//     	if(fees[i].first==(*h).first){
//     		j=fees[i].second;
//     		break;
//     	}
//     }
//     cout<<(*h).first<<" "<<j;
// }
//just change that it has to return the element which has the least tuition 
// #include <bits/stdc++.h>
// using namespace std;
// int main(){
// 	// freopen("cowqueue.in", "r", stdin);
// 	// freopen("cowqueue.out", "w", stdout);
//     int n;
//     cin>>n;
//     vector<int>v;
//     for(int i=0;i<n;i++){
//         int a;
//         cin>>a;
//         v.push_back(a);
//     }
//     sort(v.begin(), v.end());
//     int max_blasts=0;

//     for(int j=0;j<n;j++){
//         // int blasted=1;
//         int radius=1;
//         int blasted=1;
//         for(int i=0;i<n;i++){
//             if(radius+v[j]>=v[j+1] and v[j]<=v[j-1]+radius){
//                 blasted++;
//                 radius++;
//             }else if(v[i]<=v[i-1]+radius){
//                 blasted++;
//                 radius++;
//             }else if(radius+v[i]>=v[i+1]){
//                 blasted+=2;
//                 radius++;
//             }else{
//                 break;
//             }
//         }
//         cout<<blasted<<" ";
//         cout<<radius<<" ";
//         max_blasts=max(max_blasts,blasted);
//         radius=1;
//         blasted=1;
//     }
//     cout<<"\n";
//     cout<<max_blasts;
// }

// #include <bits/stdc++.h>
// using namespace std;
// int main(){
	
// 	int n;
// 	cin>>n;
// 	vector<string>odd;
// 	vector<string>even;
// 	for(int i=0;i<n;i++){
// 		string s;
// 		cin>>s;
// 		if(s.size()%2==0){
// 			even.push_back(s);
// 		}
// 		if(s.size()%2!=0){
// 			odd.push_back(s);
// 		}
// 	}
// 	//first for odd
// 	//make one while loop with l,r
// 	for(auto i:odd){
// 		cout<<i<<" ";
// 	}
// 	int counter=0;
// 	for(int i=0;i<odd.size()-1;i++){
// 		for(int j=i+1;j<odd.size();j++){
// 			string h=odd[i]+odd[j];
// 			int sum_first=0;
// 			int sum_second=0;
// 			for(int o=0;o<h.size()/2;o++){
// 				int e1=(h[o])-48;
// 				sum_first+=e1;
				
// 				int e2=h[h.size()-o-1]-48;
// 				sum_second+=e2;
// 			}
// 			if(sum_second==sum_first){
// 				counter+2;
// 			}
// 		}
// 	}
// 	for(int i=0;i<even.size()-1;i++){
// 		for(int j=i;j<even.size();j++){
// 			string h=even[i]+even[j];
// 			int sum_first=0;
// 			int sum_second=0;
// 			for(int o=0;o<h.size();o++){
// 				int e1=(h[o])-48;
// 				sum_first+=e1;
				
// 			}
// 			if(sum_second==sum_first){
// 				counter+2;
// 			}
// 		}
// 	}
// 	cout<<counter;

// }
// #include <bits/stdc++.h>
// using namespace std;
// //trust the function--recursive leap of faith
// //base case is very imp
// //print hello n times
// // void say_hello(int n){
// int  sum_n(int n){
// 	if(n==0){
// 		return 0;
// 	}
// 	int left_part=sum_n(n-1);
// 	return left_part + n;
// }
// int main(){
// 	cout<<sum_n(15);
// }


// #include <bits/stdc++.h>
// using namespace std;
// #define ll long long
// int pw(int a, int b, int m){
// 	if(b==0){
// 		return a%m;
// 	}
// 	if(b%2==0){
// 		int t=pw(a,b/2,m);
// 		return (1ll*t*t%m);
// 	}
// 	else{
// 		int t=pw(a,(b-1)/2,m);
// 		t=(1ll*t*t)%m;
// 		return (1ll*a*t%m);
// 	}
// }
	
// int main(){
// 	int a,b,m;
// 	cin>>a>>b>>m;
// 	int res1=(a/b)%m;
// 	a=a%m;
// 	int inv_b=pw(b,m-2,m);//fermat'as little theorem-when m is pirmef 
// 	int res2=a*inv_b%m;
// 	cout<<res1<<" "<<res2;
// }


//And then there were K
// #include <bits/stdc++.h>
// using namespace std;
// #define ll long long
// int main(){
// 	int t;
// 	cin>>t;
// 	for(int w=0;w<t;w++){
// 		ll n;
// 		cin>>n;
// 		ll max=0;
// 		for(ll i=0;i<32ll;i++){
// 			if((1ll<<i)&n){
// 				max=i;
// 			}
// 		}
// 		cout<<pow(2ll,max)-1<<"\n";
// 	}
// }


// #include <bits/stdc++.h>
// using namespace std;
// int main(){
// 	int t;
// 	cin>>t;
// 	for(int w=0;w<t;w++){
// 		int n;
// 		cin>>n;
// 		vector<int>array;
// 		for(int i=0;i<n+1;i++){
// 			int a;
// 			cin>>a;
// 			array.push_back(a); 
// 		}
		


// 	}
// }


#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
	int n;
	cin>>n;
	vector<int>v;
	for(int i=0;i<n;i++){
		int a;
		cin>>a;
		v.push_back(a);
	}
	sort(v.begin(),v.end());

	for(auto i:v){
		cout<<i<<" ";
	}
}