#include <iostream>
using namespace std;
int N, R, Q;
class Player{
public:
int id, s, w;
void cpy(Player *a){
id = a->id; s = a->s; w = a->w;
}
};
int partition(Player *A, int p, int r){
int key = A[r].s;
int j = p;
for (int i = p; i < r; i++){
if (A[i].s > key){
swap(A[i], A[j]);
j++;
}
}
swap(A[r], A[j]);
return j;
}
void quicksort(Player *A, int p, int r){
if (p < r){
int q = partition(A, p, r);
quicksort(A, p, q-1);
quicksort(A, q+1, r);
}
}
void merge(Player *A, Player *win, Player *lose);
int main(){
cin >> N >> R >> Q;
Player l[200010], win[100005], lose[100005];
for (int i = 0; i < 2*N; i++) {
l[i].id = i + 1;
cin >> l[i].s;
}
for (int i = 0; i < 2*N; i++) cin >> l[i].w;
quicksort(l, 0, 2*N);
for (int i = 0; i < R; i++){
for (int j = 0; j < 2*N; j += 2){
if (l[j].w > l[j+1].w){
l[j].s++;
win[j/2].cpy(&l[j]);
lose[j/2].cpy(&l[j+1]);
}
else if (l[j].w < l[j+1].w){
l[j+1].s++;
win[j/2].cpy(&l[j+1]);
lose[j/2].cpy(&l[j]);
}
}
merge(l, win, lose);
}
cout << l[Q-1].id;
return 0;
}
void merge(Player *A, Player *win, Player *lose){
int s = 0, t = 0;
for (int i = 0; i < 2 * N; i++){
if (t == N){
A[i].cpy(&win[s]);
s++;
}
else if (s == N){
A[i].cpy(&lose[t]);
t++;
}
else if (win[s].s > lose[t].s){
A[i].cpy(&win[s]);
s++;
}
else if (win[s].s < lose[t].s){
A[i].cpy(&lose[t]);
t++;
}
else if (win[s].s == lose[t].s){
if (win[s].id < lose[t].id){
A[i].cpy(&win[s]);
s++;
}
else {
A[i].cpy(&lose[t]);
t++;
}
}
}
}