#include <iostream>
#include <algorithm>
using namespace std;
const int N(10003);
int num[N]={0},f[N]={0};
int comp(const void *x,const void *y)
{
	return *(int *)y-*(int *)x;
}
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=n;i>=1;i--)
		cin>>num[i];
	for(int i=1;i<=m;i++)
	{
		fill(f,f+N,0);
		int j;
		for(j=1;f[j-1]<=num[j];j++)
			f[j]=max(f[j-1],num[j]);
		int p,minx(0x7fffffff);
		for(int k=j-1;k>=1;k--)
			if(num[k]>num[j]&&minx>num[k])
				minx=num[k],p=k;
		swap(num[p],num[j]);
		qsort(num+1,j-1,sizeof(int),comp);
	}
	for(int i=n;i>=2;i--)
		printf("%d ",num[i]);
	printf("%d\n",num[1]);
	return 0;
}
/**************************************************************
	Problem: 2247
	User: admin
	Language: C++
	Result: Accepted
	Time:53 ms
	Memory:2156 kb
****************************************************************/