#include<stdio.h>
#include<stdlib.h>
struct node {
    int data;
    struct node*next;
};
struct node*createnode(int val) {
    struct node*newnode=(struct node*)malloc(sizeof(struct node));
    if(!newnode) {
        printf("memory allocation failed\n");
        return 0;
    }
    newnode->data=val;
    newnode->next=NULL;
    return newnode;
}
int main() {
    int n,k,val;
    scanf("%d",&n);
    struct node*head=NULL, *tail=NULL;
    
    for(int i=0;i<n;i++) {
        scanf("%d", &val);
        struct node*newnode=createnode(val);
        if(head==NULL) [
            head=tail=newnode;
    } else {
        tail->next=newnode;
        tail=newnode;
    }
}
scanf("%d",&k);
if(k-n==0)
printf("list is empty");
else if(k>n)
printf("invalid input");
else
{
    if(head==NULL || n==0)  {
        printf("List is empty\n");
        return 0;
    }
    if(k<=0)  {
}
else if(k>=n) {
    struct node*curr=head;
    while(curr) { 
        struct node*temp=curr;
        curr=curr->next;
        free(temp);
    }
    head=NULL;
} else {
    struct noode*curr=head;
    for(int i=1;i<n-k;i++) {
        curr=curr->next;
    }
    struct node*to_delet=curr->next;
    curr->next=NULL;
    while(to_delete) {
        struct node*temp=to_delete;
        to_delete=to_delete->next;
        free(temp);
    }
}
if(head==NULL) {
    printf("list is empty\n");
} else {
    struct node*curr=head;
    while(curr) {
        printf("%d",curr->data);
        struct node*temp=curr;
        curr=curr->next;
    }
    struct node*to_delete=curr->next;
    curr->next=NULL;
    
    while(to_delete)  {
        struct node*temp=to_delete;
        to_delete=to_delete->next;
        free(temp);
    }
    printf("\n");
}
     return 0;
     }
}