#include <fstream>
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <utility>
#include <array>
#include <queue>
#include <functional>
using namespace std;
using namespace std::placeholders;
template <typename T>
const T& median_3(const T& a, const T& b, const T& c){
return (a <= b && b <= c) || (c <= b && b <= a) ? b : median_3(b, c, a); }
template <typename It>
void my_sort(const It s, const It d){
if(distance(s, d) > 1){
const auto pivot_val = median_3(*s, *d, *(s + distance(s, d)/2));
const auto pivot = partition(s, d, bind(less<int>(), _1, pivot_val));
my_sort(s, pivot);
if(pivot != d){
my_sort(pivot+1, d); } } }
int main(){
ifstream f("algsort.in");
ofstream g("algsort.out");
int n;
f >> n;
vector<int> v(n);
copy_n(istream_iterator<int>(f), n, begin(v));
my_sort(begin(v), end(v));
copy(begin(v), end(v), ostream_iterator<int>(g, " "));
return 0; }