#include <bits/stdc++.h>
using namespace std;
struct ListNode
{
int data;
struct ListNode* next;
ListNode(int x) : data(x), next(nullptr) {}
};
/*
思路:如果k等于0,则输出0;如果k大于0,则
且第一条节点的下一个节点不为空,则指向下一个节点,即第一条链条先走k-1;
且第一条节点不为空,则与2条链表同时走到底,获取第二条的值为第一条的倒数k个节点值
*/
int ReciprocalValueK(ListNode* pHeadNode, int k)
{
ListNode* pFirstNode = pHeadNode;
ListNode* pSecondNode = pHeadNode;
if (k == 0) {
return 0;
}
for (int i = 0; i < k - 1; i++) {
if (pFirstNode->next != nullptr) {
pFirstNode = pFirstNode->next;
} else {
return 0;
}
}
while (pFirstNode->next != nullptr) {
pFirstNode = pFirstNode->next;
pSecondNode = pSecondNode->next;
}
return pSecondNode->data;
}
int main()
{
int num;
int k;
while(cin>>num) {
ListNode* pHeadNode = new ListNode(0);
ListNode* pHead = pHeadNode;
for(int i = 0; i < num; i++) {
int temp;
cin>>temp;
ListNode *pNewNode = new ListNode(temp);
pHead->next = pNewNode; //尾插法
pHead = pHead->next;
}
cin>>k;
cout<<ReciprocalValueK(pHeadNode->next, k)<<endl;
}
return 0;
}