//求最小的前n个数,用的快排思想
#include <iostream>
#include<stdio.h>
using namespace std;
const int N=1e6+9;
int S[N],n,m,flag;
void swap1(int &a,int &b)
{
int tmp;
tmp=a;
a=b;
b=tmp;
}
int partition_sort(int A[],int l,int r)
{
int key=A[r];
int i=l-1;
for(int j=l;j<r;j++)
{
if(A[j]<=key)
swap1(A[++i],A[j]);
}
swap1(A[++i],A[r]);
return i;
}
void Quick(int A[],int l,int r,int m)
{
while(l<r && flag==0)
{
if( l+1 == r ) flag=1;
int p=partition_sort(A,l,r);
if(flag==0)
{
if(p>m)
Quick(A,l,p-1,m);
else if(p<m)
Quick(A,p+1,r,m);
else
flag=1;
}
}
}
int main()
{
// freopen("input.txt","r",stdin);
while(scanf("%d %d",&n,&m)!=EOF)
{
S[0]=0; flag=0;
for(int i=1;i<=n;i++)
scanf("%d",&S[i]);
Quick(S,1,n,m);
for(int i=1;i<=m;i++)
printf("%d ",S[i]);
printf("\n");
}
return 0;
}