#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;
}