#include <iostream>
#include <vector>
using namespace std;
void mergesort ( vector< int > & a, int l, int r) {
if ( l== r) return ;
int mid= ( l+ r) / 2 ;
mergesort ( a, l, mid) ;
mergesort ( a, mid+ 1 , r) ;
int t[ r- l+ 1 ] ;
int i= 0 ;
int ll= l;
int rr= mid+ 1 ;
while ( ll<= mid&& rr<= r)
t[ i++ ] = a[ ll] < a[ rr] ? a[ ll++ ] : a[ rr++ ] ;
while ( ll<= mid)
t[ i++ ] = a[ ll++ ] ;
while ( rr<= r)
t[ i++ ] = a[ rr++ ] ;
for ( int i= 0 ; i< r- l+ 1 ; i++ )
a[ l+ i] = t[ i] ;
}
int main ( )
{
vector< int > s;
int c;
int n;
cin>> n;
while ( n-- )
{
cin>> c;
s. push_back ( c) ;
}
mergesort ( s, 0 , s. size ( ) ) ;
for ( int i= 0 ; i< s. size ( ) ; i++ )
cout<< s[ i] << " " ;
return 0 ;
}
#include <iostream>
#include <vector>
using namespace std;
void quicksort ( int left , int right , vector< int > & a) {
if ( left>= right) return ;
int i, j, x, temp;
i= left, j= right;
x= a[ left] ;
while ( i< j) {
while ( a[ j] >= x&& i< j) j-- ;
while ( a[ i] <= x&& i< j) i++ ;
if ( i< j) {
temp= a[ i] ;
a[ i] = a[ j] ;
a[ j] = temp;
}
}
a[ left] = a[ i] ;
a[ i] = x;
quicksort ( left, i- 1 , a) ;
quicksort ( i+ 1 , right, a) ;
}
int main ( ) {
vector< int > s;
int c;
int n;
cin>> n;
while ( n-- )
{
cin>> c;
s. push_back ( c) ;
}
quicksort ( 0 , s. size ( ) - 1 , s) ;
for ( int i= 0 ; i< s. size ( ) ; i++ )
cout<< s[ i] << " " ;
return 0 ;
}