#include<cstdio>
#include<time.h>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int MAX=100000;
int A[MAX];
int LINK[MAX];
void Merge(int& p,int q,int r)
{
int i=q,j=r,k=0;
while(i!=0&&j!=0)
{
if(A[i]<=A[j])
{
LINK[k]=i;
k=i;
i=LINK[i];
}
else
{
LINK[k]=j;
k=j;
j=LINK[j];
}
}
if(i==0)
LINK[k]=j;
else
LINK[k]=i;
p=LINK[0];
}
void InsertionSort(int low,int high,int& p)
{
int a[MAX],b[MAX],k=0;
for(int i=low;i<=high;++i)
a[A[i]]=i;
for(int i=low;i<=high;++i)
b[i]=A[i];
sort(b+low,b+high+1);
for(int i=low;i<=high;++i)
{
LINK[k]=a[b[i]];
k=a[b[i]];
}
p=LINK[0];
}
void MergeSort(int low,int high,int& p)
{
if(high-low+1<15)
InsertionSort(low,high,p);
else
{
int mid=(low+high)/2;
int q=0,r=0;
MergeSort(low,mid,q);
MergeSort(mid+1,high,r);
Merge(p,q,r);
}
}
int main()
{
freopen("2sort.in","r",stdin);
freopen("3sort.out","w",stdout);
int M=101,N=0;
for(int i=1;i<=M;++i)
scanf("%d",&A[i]);
memset(LINK,0,sizeof(LINK));
MergeSort(1,M,N);
for(int i=N;i!=0;i=LINK[i])
printf("%d\n",A[i]);
return 0;
}
#include<time.h>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int MAX=100000;
int A[MAX];
int LINK[MAX];
void Merge(int& p,int q,int r)
{
int i=q,j=r,k=0;
while(i!=0&&j!=0)
{
if(A[i]<=A[j])
{
LINK[k]=i;
k=i;
i=LINK[i];
}
else
{
LINK[k]=j;
k=j;
j=LINK[j];
}
}
if(i==0)
LINK[k]=j;
else
LINK[k]=i;
p=LINK[0];
}
void InsertionSort(int low,int high,int& p)
{
int a[MAX],b[MAX],k=0;
for(int i=low;i<=high;++i)
a[A[i]]=i;
for(int i=low;i<=high;++i)
b[i]=A[i];
sort(b+low,b+high+1);
for(int i=low;i<=high;++i)
{
LINK[k]=a[b[i]];
k=a[b[i]];
}
p=LINK[0];
}
void MergeSort(int low,int high,int& p)
{
if(high-low+1<15)
InsertionSort(low,high,p);
else
{
int mid=(low+high)/2;
int q=0,r=0;
MergeSort(low,mid,q);
MergeSort(mid+1,high,r);
Merge(p,q,r);
}
}
int main()
{
freopen("2sort.in","r",stdin);
freopen("3sort.out","w",stdout);
int M=101,N=0;
for(int i=1;i<=M;++i)
scanf("%d",&A[i]);
memset(LINK,0,sizeof(LINK));
MergeSort(1,M,N);
for(int i=N;i!=0;i=LINK[i])
printf("%d\n",A[i]);
return 0;
}