#include <bits/stdc++.h>
using namespace std;
int n,a[100010];
void qs(int l,int r){
if(l==r)return;
int i=l-1,j=r+1;//定义左右指针
int x=a[l+r>>1];//定义“中值”
while(i<j){
do i++;while(a[i]<x);
do j--;while(a[j]>x);
if(i<j)swap(a[i],a[j]);
}
qs(l,j);//递归
qs(j+1,r);
}
int main(){
cin>>n;
for(int i=0;i<n;i++)scanf("%d",&a[i]);
qs(0,n-1);
for(int i=0;i<n;i++)printf("%d ",a[i]);
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int n,a[100010];
int main(){
cin>>n;
for(int i=0;i<n;i++) scanf("%d",&a[i]);
sort(a,a+n);//直接调用sort函数
for(int i=0;i<n;i++) printf("%d ",a[i]);
}
#include <bits/stdc++.h>
using namespace std;
int n,k,a[5000010];
int qs(int l, int r){
if(l==r) return a[l];
int i=l-1, j=r+1, x=a[(l+r)/2];
while(i<j){
do i++; while(a[i]<x); //向右找>=x的数
do j--; while(a[j]>x); //向左找<=x的数
if(i<j) swap(a[i],a[j]);
}
if(k<=j) return qs(l,j);//调用左边
else return qs(j+1,r);//调用右边
}
int main(){
scanf("%d%d",&n,&k);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
printf("%d\n",qs(0,n-1));
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int n,k,a[5000010];
int main(){
scanf("%d %d",&n,&k);
for(int i=0;i<n;i++)scanf("%d",&a[i]);
sort(a,a+n);
printf("%d\n",a[k]);
return 0;
}