#include<bits/stdc++.h>
using namespace std;
int num;
char ch;
int read()
{
num=0;
ch=getchar();
while(ch<'0'||ch>'9')
{
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
num=(num<<1)+(num<<3)+ch-'0';
ch=getchar();
}
return num;
}
int f(int x,int n,int mn,int mx)
{
return (int)(1.0*(n-1)*(x-mn)/(1.0*mx-mn)+1);
}
struct node{
int num,next;
}c[100001];
int head[100001],a[100001],ans[100001],n;
int main()
{
n=read();
int mn=2147483647,mx=-1;
for(int i=1;i<=n;++i)
{
a[i]=read();
mn=min(mn,a[i]);
mx=max(mx,a[i]);
}
for(int i=1;i<=n;++i)
{
c[i]=node{a[i],head[f(a[i],n,mn,mx)]};
head[f(a[i],n,mn,mx)]=i;
}
int m=f(mx,n,mn,mx),t,k=0;
for(int i=1;i<=m;++i)
{
t=0;
for(int j=head[i];j;j=c[j].next)
{
a[++t]=c[j].num;
}
sort(a+1,a+t+1);
for(int j=1;j<=t;++j)
{
ans[++k]=a[j];
}
}
for(int i=1;i<=n;++i)
{
cout<<ans[i]<<' ';
}
return 0;
}