#include <stdio.h>
#define M 5
void Merge(int r[],int r1,int s,int m,int t);
void MergePass(int r[],int r1[],int n,int h);
void MergeSort2(int r[],int r1[],int n);
int main()
{
int i;
int r[M];
int r1[M];
for(i = 0; i < M; i ++)
{
scanf("%d",&r[i]);
}
MergeSort2(r,r1,M-1);
for(i = 0; i < M; i ++)
{
printf("%d/n",r[i]);
}
return 0;
}
void Merge(int r[],int r1[],int s,int m,int t)
{
int i;
int j;
int k;
i = s;
j = m + 1;
k = s;
while(i <= m && j <= t)
{
if(r[i] < r[j])
{
r1[k] = r[i];
k ++;
i ++;
}
else
{
r1[k] = r[j];
k ++;
j ++;
}
}
if(i <= m)
{
while(i <= m)
{
r1[k] = r[i];
k ++;
i ++;
}
}
else
{
while(j <= t)
{
r1[k] = r[j];
k ++;
j ++;
}
}
}
void MergePass(int r[],int r1[],int n,int h)
{
int i;
int k;
i = 0;
while(i <= n - 2*h + 1)
{
Merge(r,r1,i,i + h - 1,i + 2*h - 1);
i += 2*h;
}
if(i < n - h + 1)
{
Merge(r,r1,i,i + h - 1,n);
}
else
{
for(k = i; k <= n; k ++)
{
r1[k] = r[k];
}
}
}
void MergeSort2(int r[],int r1[],int n)
{
int h = 1;
while(h <= n)
{
MergePass(r,r1,n,h);
h = 2 * h;
MergePass(r1,r,n,h);
h = 2 * h;
}
}