// Complexity    O(log(n)*log(m))


#include<bits/stdc++.h>
using namespace std;
#define f(i,x,y) for(int i = (x);i < (y);++i)
#define F(i,x,y) for(int i = (x);i > (y);--i)
int max(int a,int b){return (a > b?a:b);}
int min(int a,int b){return (a < b?a:b);}
int mod(int a){return (a > 0?a:((-1)*(a)));}


int indLess(int *arr,int sz,int val)// Assuming arr is sorted
{
  if(arr[0] >= val)return (-1+1);
  else
  {
    int s = 0,e = sz-1;
    while((e-s)>1)
    {
      int m = (s+e)/2;
      if(arr[m] < val){s = m;}
      else if(arr[m] > val){e = m-1;}
      else{;}
    }
    if(arr[e] < val)return e+1;
    else return s+1;
  }
}

int check(int *arr1,int *arr2,int sz1,int sz2,int k)
{
  int val0 = indLess(arr1,sz1,arr2[0])+0+1;
  if(val0 > k)return -1;
  else
  {
    int s = 0,e = sz2-1;
    while((e-s)> 1)
    {
      int m = (e+s)/2;
      int valm = indLess(arr1,sz1,arr2[m])+m+1;
      if(valm == k){return (m);}
      else if(valm > k){e = m-1;}
      else {s = m;}
    }
    int vale = indLess(arr1,sz1,arr2[e])+e+1;
    if(vale <= k){return e;}
    else {return s;}
  }
}


int func(int *arr1,int *arr2,int sz1,int sz2,int k)
{
  int *m;int ms;
  int *M;int Ms;
  if(arr1[sz1-1] >= arr2[sz2-1]){m = arr2,M = arr1;ms = sz2;Ms = sz1;}
  else {m = arr1,M = arr2;ms = sz1;Ms = sz2;}
  if(m[ms-1] <= M[0])
  {
    if(k <= ms)return m[k-1];
    else return M[k-ms-1];
  }
  else//m[k-1] > M[0]
  {
    int p = check(m,M,ms,Ms,k);//return index
    int a = indLess(m,ms,M[p]);// return num
    int b = (k-(a+p+1));
    if(b == 0)return M[p];
    else return (m[a+b-1]);
  }
}




int main()
{
  int n,m,k;
  cin >> n >> m >> k;
  int arr1[n];
  int arr2[m];
  f(i,0,n)
    cin >> arr1[i];
    f(i,0,m)
    cin >> arr2[i];
  cout << func(arr1,arr2,n,m,k) << endl;
  return 0;
}
