#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int val;
struct node *next;
} Node;
Node *newNode(int val);
void freeList(Node *head);
Node *removeLastK(Node *head, int k);
int main(void) {
int n, k, val;
Node *node, *head = NULL, *cur = NULL;
scanf("%d%d", &n, &k);
for (int i = 0; i < n; i++) {
scanf("%d", &val);
node = newNode(val);
if (head == NULL) {
head = cur = node;
continue;
}
cur->next = node;
cur = cur->next;
}
head = removeLastK(head, k);
cur = head;
while (cur != NULL) {
printf("%d", cur->val);
cur = cur->next;
if (cur != NULL)
printf(" ");
}
printf("\n");
freeList(head);
return 0;
}
Node *newNode(int val) {
Node *node = (Node *) malloc(sizeof(Node));
node->val = val;
node->next = NULL;
return node;
}
void freeList(Node *head) {
Node *old;
while (head != NULL) {
old = head;
head = head->next;
free(old);
}
}
Node *removeLastK(Node *head, int k) {
Node *fast = head;
Node *slow = head;
Node *pre = NULL, *old;
for (int i = 0; i < k; i++) {
fast = fast->next;
}
while (fast != NULL) {
pre = slow;
slow = slow->next;
fast = fast->next;
}
if (pre == NULL) {
old = head;
head = head->next;
} else {
old = pre->next;
pre->next = pre->next->next;
}
free(old);
return head;
}