#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
****************************************************************/