#include <iostream>
using namespace std;
class node{
public:
int data;
node* next;
//Constructor
node(int d){
data = d;
next = NULL;
}
};
void insertAtHead(node*&head,int data){
node*n = new node(data);
n->next = head;
head = n;
}
int length(node*head){
int len=0;
while(head!=NULL){
head = head->next;
len += 1;
}
return len;
}
void insertAtTail(node*&head,int data){
if(head==NULL){
head = new node(data);
return;
}
node*tail = head;
while(tail->next!=NULL){
tail = tail->next;
}
tail->next = new node(data);
return;
}
void print(node*head){
//node*temp = head;
while(head!=NULL){
cout<<head->data<<" ";
head = head->next;
}
cout<<endl;
}
node* append(node* head , int k){
int len = length(head) - k;;
node* temp = head;
int count=0;
while(temp && count<len-1){
temp=temp->next;
count++;
}
//cout<<temp->data;
node* prevKth = temp;
//cout<<prevKth->data;
node* kThNode = temp->next;
//cout<<kThNode->data;
temp = kThNode;
while(temp->next)
temp=temp->next;
//cout<<temp->data;
temp->next = head;
head = kThNode;
prevKth->next = NULL;
return head;
}
int main() {
node*head1 = NULL;
//node* head2 = NULL;
int x=0;
int n1 =0,k=0;
cin>>n1;
for(int i=0;i<n1;i++){
cin>>x;
insertAtTail(head1,x);
}
cin>>k;
// print(head);
head1 = append(head1 , k);
print(head1);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3Mgbm9kZXsKcHVibGljOgogICAgaW50IGRhdGE7CiAgICBub2RlKiBuZXh0OwogICAgCiAgICAvL0NvbnN0cnVjdG9yCiAgICBub2RlKGludCBkKXsKICAgICAgICBkYXRhID0gZDsKICAgICAgICBuZXh0ID0gTlVMTDsKICAgIH0KfTsKCnZvaWQgaW5zZXJ0QXRIZWFkKG5vZGUqJmhlYWQsaW50IGRhdGEpewogICAgbm9kZSpuID0gbmV3IG5vZGUoZGF0YSk7CiAgICBuLT5uZXh0ID0gaGVhZDsKICAgIGhlYWQgPSBuOwp9CgppbnQgbGVuZ3RoKG5vZGUqaGVhZCl7CiAgICAKICAgIGludCBsZW49MDsKICAgIHdoaWxlKGhlYWQhPU5VTEwpewogICAgICAgIGhlYWQgPSBoZWFkLT5uZXh0OwogICAgICAgIGxlbiArPSAxOwogICAgfQogICAgcmV0dXJuIGxlbjsKfQoKdm9pZCBpbnNlcnRBdFRhaWwobm9kZSomaGVhZCxpbnQgZGF0YSl7CiAgICAKICAgIGlmKGhlYWQ9PU5VTEwpewogICAgICAgIGhlYWQgPSBuZXcgbm9kZShkYXRhKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBub2RlKnRhaWwgPSBoZWFkOwogICAgd2hpbGUodGFpbC0+bmV4dCE9TlVMTCl7CiAgICAgICAgdGFpbCA9IHRhaWwtPm5leHQ7CiAgICB9CiAgICB0YWlsLT5uZXh0ID0gbmV3IG5vZGUoZGF0YSk7CiAgICByZXR1cm47Cn0KCgoKCgp2b2lkIHByaW50KG5vZGUqaGVhZCl7CiAgICAvL25vZGUqdGVtcCA9IGhlYWQ7CiAgICAKICAgIHdoaWxlKGhlYWQhPU5VTEwpewogICAgICAgIGNvdXQ8PGhlYWQtPmRhdGE8PCIgIjsKICAgICAgICBoZWFkID0gaGVhZC0+bmV4dDsKICAgIH0KICAgIGNvdXQ8PGVuZGw7Cn0KCiAKCm5vZGUqIGFwcGVuZChub2RlKiBoZWFkICwgaW50IGspewoKCWludCBsZW4gPSBsZW5ndGgoaGVhZCkgLSBrOzsKCW5vZGUqIHRlbXAgPSBoZWFkOwoJaW50IGNvdW50PTA7Cgl3aGlsZSh0ZW1wICYmIGNvdW50PGxlbi0xKXsKCQl0ZW1wPXRlbXAtPm5leHQ7CgkJY291bnQrKzsKCX0KCQoJLy9jb3V0PDx0ZW1wLT5kYXRhOwoJbm9kZSogcHJldkt0aCA9IHRlbXA7CgkvL2NvdXQ8PHByZXZLdGgtPmRhdGE7CgkKCW5vZGUqIGtUaE5vZGUgPSB0ZW1wLT5uZXh0OwoJLy9jb3V0PDxrVGhOb2RlLT5kYXRhOwoJdGVtcCA9IGtUaE5vZGU7Cgkgd2hpbGUodGVtcC0+bmV4dCkKCSAgCXRlbXA9dGVtcC0+bmV4dDsKCQoJLy9jb3V0PDx0ZW1wLT5kYXRhOwoJICB0ZW1wLT5uZXh0ID0gaGVhZDsKCSAgaGVhZCA9IGtUaE5vZGU7CgkJCglwcmV2S3RoLT5uZXh0ID0gTlVMTDsKCXJldHVybiBoZWFkOwp9CgppbnQgbWFpbigpIHsKCgkKCQlub2RlKmhlYWQxID0gTlVMTDsKCQkvL25vZGUqIGhlYWQyID0gTlVMTDsKCQlpbnQgeD0wOwoJCWludCBuMSA9MCxrPTA7CgkJY2luPj5uMTsKCQlmb3IoaW50IGk9MDtpPG4xO2krKyl7CgkJCWNpbj4+eDsKCQkJaW5zZXJ0QXRUYWlsKGhlYWQxLHgpOwoJCX0KCQljaW4+Pms7CgkJCgoJLy8gcHJpbnQoaGVhZCk7IAoJCWhlYWQxID0gYXBwZW5kKGhlYWQxICwgayk7CgkJcHJpbnQoaGVhZDEpOwogICAgcmV0dXJuIDA7Cn0=