import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] rawInput = br.readLine().trim().split(" ");
int n = Integer.parseInt(rawInput[0]);
int val = Integer.parseInt(rawInput[1]);
if (val > n) {
System.out.print("");
br.close();
return;
}
rawInput = br.readLine().trim().split(" ");
// 构建链表节点
Node head = buildLinkedList(rawInput);
// 找到倒数第k个节点,并删除
head = findAndDelLastKNode(head, n, val);
// 打印输出链表节点的值
StringBuilder sb = new StringBuilder();
while (head != null) {
sb . append(head.value) . append(" ");
head = head.next;
}
System.out.print(sb.toString().trim());
br.close();
}
private static Node buildLinkedList(String[] elements) {
Node head = null;
if (0 == elements.length) {
return head;
}
Node curNode = null;
for (int i = 0; i
Node node = new Node(Integer.parseInt(elements[i]));
if (null == head) {
head = node;
} else {
curNode.next = node;
}
curNode = node;
}
return head;
}
private static Node findAndDelLastKNode(Node head, int n, int val) {
if (null == head) {
return head;
}
// 倒数第n个节点特殊处理
if (val == n) {
Node node = head;
head = head.next;
node = null; // 避免对象的游离
return head;
}
//由于是单链表,要查到倒数第 k + 1节点,以方便后序节点赋值处理
int i = 0;
Node curNode = head;
// 先查找正数第k + 1个节点
while (i
curNode = curNode.next;
i++;
}
Node lastNode = head;
while (curNode != null) {
curNode = curNode.next;
lastNode = lastNode.next;
}
Node lastKNode = lastNode.next;
lastNode.next = lastKNode.next;
lastKNode = null;
return head;
}
}
class Node {
public int value;
public Node next;
public Node(int value) {
this.value = value;
next = null;
}
}