rt
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define re register
using namespace std;
const int MAXN = 100001;
struct node{
int id;
}pl[MAXN<<1],tmp[MAXN<<1];
int w[MAXN<<1],score[MAXN<<1];
bool cmp(node &x,node &y){
if(score[x.id] == score[y.id]){
return x.id < y.id;
}else if(score[x.id] > score[y.id]){
return true;
}else if(score[x.id] < score[y.id]){
return false;
}
}
int n,r,q;
void mergesort(int l,int r){
int mid = (l+r)>>1;
if(r - l != 1){
mergesort(l,mid);
mergesort(mid + 1,r);
}
if(r - l == 1){
if(w[pl[l].id] > w[pl[r].id]){
score[pl[l].id]++;
}else{
score[pl[r].id]++;
}
}
re int lp = l,rp = mid+1,k = lp;
while(lp <= mid && rp <= r){
if(score[pl[lp].id] < score[pl[rp].id]){
tmp[k++] = pl[rp++];
}else
if(score[pl[lp].id] == score[pl[rp].id]){
if(pl[lp].id < pl[rp].id){
tmp[k++] = pl[lp++];
}
else{
tmp[k++] = pl[rp++];
}
}else
if(score[pl[lp].id] > score[pl[rp].id]){
tmp[k++] = pl[lp++];
}
}
while(lp <= mid){
tmp[k++] = pl[lp++];
}
while(rp <= r){
tmp[k++] = pl[rp++];
}
for(int i = l; i <= r; i++){
pl[i] = tmp[i];
}
memset(tmp,0,sizeof(tmp));
}
int main(){
// freopen("P1309_2.in","r",stdin);
// freopen("out.txt","w",stdout);
scanf("%d%d%d",&n,&r,&q);
for(int i = 1 ; i <= n + n ; i++){
re int sc;
scanf("%d",&sc);
pl[i].id = i;
score[pl[i].id] = sc;
}
for(int i = 1 ; i <= n + n ; i++){
re int worth;
scanf("%d",&worth);
w[pl[i].id] = worth;
}
sort(pl + 1,pl + 1 + n + n,cmp);
while(r--){
mergesort(1,n+n);
}
printf("%d\n",pl[q].id);
return 0;
}