#include <iostream>
using namespace std;
 
int a[100003],b[100003];
 
int main()
{
    long long t1,t2,t,n,i,j,l;
  
    cin>>n>>t1>>t2;
    t=0;
    //Заполняем время прихода пациентов на приём в массив a
    for(i=1; i<=n; i++) cin>>a[i];
    //Заполняем время на приём пациентов в массив b
    for(i=1; i<=n; i++) cin>>b[i];
    //Проверяет приходит ли пациент в начале приёма/после начала приёма
    if(a[1]>=t1){
    cout<<t1<<endl;
    return 0;
    }
    //Вводим точки отсчёта
    else{
    t=a[1];
    l=t1-a[1];
    t1+=b[1];
    }
    j=2;
    //Условие: Если разница между началом приёма и приёмом > 0; цикл не прошёл всех пациентов; приём ещё не окончен.
    while(l>0 && j<=n && t1<t2)
    {
      //Проверяет приходит ли следующий пациен к началу/после начала своего приёма
      if(a[j]>=t1){
        t=t1;
        l=0;
      }
      else{
        //Проверяет является ли разница между началом приёма следующего пациента и временем его прихода меньше, чем прыдидущая зафиксированная разницы
        if(t1-a[j]<l){
          t=a[j];
          l=t1-a[j];
        }
        t1+=b[j];
      }
      j++;
    }
    //Если время приёма ещё не окончено, пациенты все прошли и прийти раньше не получилось - приходим сразу в конце приёма последнего
    if(t1<t2 && l!=0 && j>n){
      t=t1;
      l=0;
    }
    cout<<t<<endl;
}