//https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d?tpId=37&tqId=21274&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26tpId%3D37%26type%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title=

#include <iostream>
#include <malloc.h>

using namespace std;

typedef struct ListNode{
    int m_nkey;
    ListNode* m_pNext;
}Node, *LinkList;

int InitList(LinkList &L){
    LinkList tem = (LinkList)malloc(sizeof(Node));  //? malloc <malloc.h>
    if(!tem)
        exit(-2);   //? exit() 使程序再main外停止 OVERFLOW
    tem->m_pNext = NULL;   //?指向运算符
    L = tem;
    return 1;   //OK
}

void CreatList(LinkList &L, int n){    //? 为什么要加引用
//    int n = 0;
    int temnum = 0;
    LinkList rear = NULL;
//    cin >> n;
    for(int i = n;i>0;i--){
        LinkList tem = (LinkList)malloc(sizeof(Node));
        cin >> temnum;
        tem->m_nkey = temnum;
        tem->m_pNext = tem;
        if(i==n){
            rear = tem;
            L->m_pNext = tem;
        }else{
            rear->m_pNext = tem;
            rear = tem;
        }
    }
}

LinkList getElem(LinkList L){
    LinkList head = L;
//    LinkList rear = NULL;
    int k = 0;
    cin >> k;

    for(int i = k;i>0;i--){
        L = L->m_pNext;

        if(L==L->m_pNext&&i>1)
            return NULL;

    }

    head = head->m_pNext;

    while(L!=L->m_pNext){
        L = L->m_pNext;
        head = head->m_pNext;
    }

    return head;
}

void ClearList(LinkList &L){
    LinkList p = NULL;
    LinkList q = NULL;
    p = L->m_pNext;
    while(p!=p->m_pNext){
        q = p->m_pNext;
        free(p);
        p = q;
    }
    free(p);
    L->m_pNext = NULL;


}

int main(){

    LinkList L, ans;
    int n = 0;
    while(cin >> n){
        InitList(L);
        CreatList(L, n);
        if((ans=getElem(L))!=NULL)
            cout << ans->m_nkey << endl;

        ClearList(L);
        free(L);
    }

}