#include<bits/stdc++.h>
using namespace std ;
struct NODE{
long long dis,oil ;
friend bool operator <(NODE a,NODE b) {
return a.dis<b.dis ;
}
} ;
bool cmp(NODE a,NODE b){return a.dis>b.dis;}
long long n,l,p,ans ;
NODE s[10004] ;
priority_queue<NODE> que ;
int main() {
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0) ;
cin>>n ;
for(int i=n;i>0;--i)cin>>s[i].dis>>s[i].oil ;
sort(s+1,s+n+1,cmp) ;
cin>>l>>p ;
if(s[1].dis-l>p){cout<<-1;return 0;}
que.push(s[1]);long long u=1;p-=l-s[u].dis;l=s[u].dis ;
while(l!=0) {
++u ;
if(l-s[u].dis<=p) {
que.push(s[u]) ;
p-=l-s[u].dis;l=s[u].dis ;
}else {
while(p<l-s[u].dis) {
NODE t=que.top();que.pop() ;
p+=t.oil;ans++ ;
if(que.empty()&&p<l-s[u].dis) {
cout<<-1 ;
return 0 ;
}
}--u ;
}
}
cout<<ans ;
return 0 ;
}