#include "bits/stdc++.h"
using namespace std;
const int maxn = (int)1e5 + 10;
struct node
{
int id,s,w;
void print() { printf ("id=%d s=%d w=%d\n",id,s,w); }
} a[maxn*2],win[maxn],lose[maxn];
int n,r,q;
bool cmp(node n1,node n2)
{
return n1.s != n2.s ? n1.s > n2.s : n1.id < n2.id;
}
void merge_sort()
{
int i = 1,j = 1,m = n / 2,t = 0;
while (i <= m && j <= m)
if (cmp(win[i],lose[i]))
a[++t] = win[i++];
else
a[++t] = lose[j++];
while (i <= m) a[++t] = win[i++];
while (j <= m) a[++t] = lose[j++];
}
int main()
{
scanf ("%d%d%d",&n,&r,&q);
n = n * 2;
for (int i = 1;i <= n;i++)
a[i].id = i;
for (int i = 1;i <= n;i++)
scanf ("%d",&a[i].s);
for (int i = 1;i <= n;i++)
scanf ("%d",&a[i].w);
sort(a + 1,a + 1 + n,cmp);
while (r--)
{
for (int i = 1;i <= n;i += 2)
{
int u = i,v = i + 1;
if (a[u].w > a[v].w) { a[u].s = a[u].s+1; win[(i+1)/2] = a[u]; lose[(i+1)/2] = a[v]; }
else { a[v].s = a[v].s + 1; win[(i+1)/2] = a[v]; lose[(i+1)/2] = a[u]; }
}
merge_sort();
}
printf ("%d",a[q].id);
return 0;
}