#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int People_Number,How_Round;
int What_People_Number;
struct Node_student{
int My_Number=0;
int Point_Value=0;
int Strong_Numbers=0;
}cnt[200005];
bool cmp(Node_student num1,Node_student num2){
if(num1.Point_Value==num2.Point_Value)
return num1.My_Number<num2.My_Number;
return num1.Point_Value>num2.Point_Value;
}
void print(){
for(int i=1;i<=People_Number*2;i++)
cout<<cnt[i].My_Number<<" "<<cnt[i].Point_Value<<endl;
cout<<endl;
}
int main(){
cin>>People_Number>>How_Round
>>What_People_Number;
for(int i=1;i<=People_Number*2;i++){
int num;cin>>num;
cnt[i].My_Number=i;
cnt[i].Point_Value=num;
}
for(int i=1;i<=People_Number*2;i++){
int num;cin>>num;
cnt[i].Strong_Numbers=num;
}
sort(cnt+1,cnt+People_Number*2+1,cmp);
while(How_Round--){
vector<Node_student> win,lose;
for(int i=1;i<=People_Number*2;i+=2){
if(cnt[i].Strong_Numbers<cnt[i+1].Strong_Numbers){
cnt[i+1].Point_Value++;
win.push_back(cnt[i+1]);
lose.push_back((cnt[i]));
}
else{
cnt[i].Point_Value++;
win.push_back(cnt[i]);
lose.push_back((cnt[i+1]));
}
}
merge(win.begin(),win.end(),lose.begin(),lose.end(),cnt+1,cmp);
}
cout<<cnt[What_People_Number].My_Number;
return 0;
}