/*
单链表存的并不是每一个数的值,而是每个数是第几个被插入的,
存的是插入的编号
*/
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N];
int e[N],ne[N],head,idx;
int n,k;
void init()
{
head=-1;
idx=0;
}
void add(int a,int b) //插在第a个插入的数后面
{
e[idx]=b;
//ne[b]=ne[a];
//ne[a]=b;
ne[idx]=ne[a];
ne[a]=idx;
idx++;
}
void add_head(int b) //类似于邻接表常用的头插法
{
e[idx]=b;
ne[idx]=head;
head=idx++;
}
void remove(int k) //删除第k个插入的数后面的数
{
ne[k]=ne[ne[k]];
}
int main()
{
scanf("%d%d",&n,&k);
init();
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(int i=0;i<n;i++) //把n个数串起来成单链表,单链表存的是每个数是第几个被插入的
{
if(i==0)
{
add_head(i);
}
else
{
add(i-1,i);
}
}
//删除倒数第k个数 也就是删除正着数 (n-1)-k+1 个插入的数
// 相当于删除正着数 (n-1)-k个插入的数后面的数
if((n-1-k)==-1) //如果删除的是头结点指向的数,特判一下
{
head=ne[head];
}
else remove((n-1)-k);
//遍历构成的新链表:
for(int i=head;i!=-1;i=ne[i])
{
int j=e[i];
cout<<a[j]<<" ";
}
cout<<endl;
return 0;
}