#include<bits/stdc++.h>
using namespace std;
void Merge(vector<int>&nums,int left,int mid,int right)
{
vector<int>leftpart,rightpart;
for(int i=left;i<=right;i++)
{
if(i<=mid)
{
leftpart.push_back(nums[i]);
}
else
{
rightpart.push_back(nums[i]);
}
}
int leftidx=0,rightidx=0,numsidx=left;
while(1)
{
if(leftpart[leftidx]<rightpart[rightidx])
{
nums[numsidx]=leftpart[leftidx];
numsidx++;
leftidx++;
}
else
{
nums[numsidx]=rightpart[rightidx];
numsidx++;
rightidx++;
}
if(leftidx>=leftpart.size()|| rightidx>=rightpart.size())
break;
}
while(leftidx<leftpart.size())
{
nums[numsidx]=leftpart[leftidx];
numsidx++;
leftidx++;
}
while(rightidx<rightpart.size())
{
nums[numsidx]=rightpart[rightidx];
numsidx++;
rightidx++;
}
}
void Mergesort(vector<int>&nums,int left,int right)
{
if(left==right)
return;
int mid=(right+left)/2;
Mergesort(nums,left,mid);
Mergesort(nums,mid+1,right);
Merge(nums,left,mid,right);
}
int main()
{
int n;
cin>>n;
vector<int>nums;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
nums.push_back(x);
}
Mergesort(nums,0,n-1);
for(int i=0;i<n;i++)
{
cout<<nums[i]<<" ";
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdm9pZCBNZXJnZSh2ZWN0b3I8aW50PiZudW1zLGludCBsZWZ0LGludCBtaWQsaW50IHJpZ2h0KQp7CnZlY3RvcjxpbnQ+bGVmdHBhcnQscmlnaHRwYXJ0Owpmb3IoaW50IGk9bGVmdDtpPD1yaWdodDtpKyspCnsKaWYoaTw9bWlkKQp7CmxlZnRwYXJ0LnB1c2hfYmFjayhudW1zW2ldKTsKfQplbHNlCnsKcmlnaHRwYXJ0LnB1c2hfYmFjayhudW1zW2ldKTsKfQp9CmludCBsZWZ0aWR4PTAscmlnaHRpZHg9MCxudW1zaWR4PWxlZnQ7CndoaWxlKDEpCnsKaWYobGVmdHBhcnRbbGVmdGlkeF08cmlnaHRwYXJ0W3JpZ2h0aWR4XSkKewpudW1zW251bXNpZHhdPWxlZnRwYXJ0W2xlZnRpZHhdOwpudW1zaWR4Kys7CmxlZnRpZHgrKzsKfQplbHNlCnsKbnVtc1tudW1zaWR4XT1yaWdodHBhcnRbcmlnaHRpZHhdOwpudW1zaWR4Kys7CnJpZ2h0aWR4Kys7Cn0KaWYobGVmdGlkeD49bGVmdHBhcnQuc2l6ZSgpfHwgcmlnaHRpZHg+PXJpZ2h0cGFydC5zaXplKCkpCmJyZWFrOwp9CndoaWxlKGxlZnRpZHg8bGVmdHBhcnQuc2l6ZSgpKQp7Cm51bXNbbnVtc2lkeF09bGVmdHBhcnRbbGVmdGlkeF07Cm51bXNpZHgrKzsKbGVmdGlkeCsrOwp9CndoaWxlKHJpZ2h0aWR4PHJpZ2h0cGFydC5zaXplKCkpCnsKbnVtc1tudW1zaWR4XT1yaWdodHBhcnRbcmlnaHRpZHhdOwpudW1zaWR4Kys7CnJpZ2h0aWR4Kys7Cn0KfQp2b2lkIE1lcmdlc29ydCh2ZWN0b3I8aW50PiZudW1zLGludCBsZWZ0LGludCByaWdodCkKewppZihsZWZ0PT1yaWdodCkKcmV0dXJuOwppbnQgbWlkPShyaWdodCtsZWZ0KS8yOwpNZXJnZXNvcnQobnVtcyxsZWZ0LG1pZCk7Ck1lcmdlc29ydChudW1zLG1pZCsxLHJpZ2h0KTsKTWVyZ2UobnVtcyxsZWZ0LG1pZCxyaWdodCk7Cn0KaW50IG1haW4oKQp7CmludCBuOwpjaW4+Pm47CnZlY3RvcjxpbnQ+bnVtczsKZm9yKGludCBpPTA7aTxuO2krKykKewppbnQgeDsKY2luPj54OwpudW1zLnB1c2hfYmFjayh4KTsKfQpNZXJnZXNvcnQobnVtcywwLG4tMSk7CmZvcihpbnQgaT0wO2k8bjtpKyspCnsKY291dDw8bnVtc1tpXTw8IiAiOwp9Cn0=