#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
const int MAXN=2e5+5;
const int LOG=19;
const int BASE=1<<LOG;
int tree1[2*BASE+5];
int tree2[2*BASE+5];
int n;
long long N1,H1,N2,H2;
long long x[MAXN];
long long h[MAXN];
vector<pair<int,int>>used;
struct Group
{
int count;
long long start;
long long end;
};
PII query1 (long long n)
{
int idx=1;
int sum=0;
while(idx<BASE)
{
if(tree1[idx*2+1]+sum>n)
{
idx=idx*2+1;
}
else
{
idx=idx*2;
sum+=tree1[idx+1];
}
}
return {idx-BASE,sum};
}
long long query2(int l, int r)
{
l+=BASE-1;
r+=BASE+1;
long long res=0;
while(l/2!=r/2)
{
if(l%2==0)
{
res+=tree2[l+1];
}
if(r%2==1)
{
res+=tree2[r-1];
}
l/=2;
r/=2;
}
return res;
}
void update(int idx, int val)
{
if (idx == 0) return;
int add = val * ((idx+H2-1) / H2);
idx+=BASE;
tree1[idx]+=val;
tree2[idx]+=add;
idx/=2;
while(idx)
{
tree1[idx]=tree1[idx*2]+tree1[idx*2+1];
tree2[idx]=tree2[idx*2]+tree2[idx*2+1];
idx/=2;
}
}
bool check (long long n1, long long n2)
{
PII q1=query1(n1);
int atidx=tree1[q1.first+BASE];
n1-=q1.second;
atidx-=n1;
int needed = atidx * ((q1.first+H2-1)/H2); // overflow
// czasami nie trzeba robic query?
long long q2=query2(0, q1.first-1);
/*if(n2>=q2+needed)
{
return true;
}
return false;*/
return n2 >= q2+needed;
}
vector<Group>Groups;
int main()
{
cin>>n;
for(int i=0; i<n; i++)
{
cin>>x[i]>>h[i];
}
cin>>N1>>H1>>N2>>H2;
if(H2>H1)
{
swap(H1,H2);
swap(N1,N2);
}
int l=0;
int r=0;
long long end;
while(l<n)
{
end=x[l]+h[l];
r=l+1;
while(r<n and end>=x[r])
{
end=max(end, x[r]+h[r]);
r++;
}
Groups.push_back({r-l, x[l], end});
l=r;
}
used.resize(Groups.size(), {0LL, 0LL});
r=1;
long long n1=N1;
long long n2=N2;
long long h1=H1;
long long h2=H2;
long long cur=Groups[0].count;
long long res=cur;
for(int l=0; l<Groups.size(); l++)
{
n1+=used[l].first;
n2+=used[l].second;
while(check(n1,n2))
{
cur+=Groups[r].count;
res=max(res,cur);
long long len=Groups[r].start-Groups[r-1].end;
long long takeLow=0;
long long takeHigh=len/H1;
if(takeHigh>n1)
{
takeLow=(takeHigh-n1)*(H1/H2);
if(takeLow>n2)
{
break;
}
takeHigh=n1;
n1=0;
n2-=takeLow;
} else {
n1 -= takeHigh;
}
used[r]={takeHigh, takeLow};
len %= H1;
update(len, 1);
r++;
}
cur-=Groups[l].count;
update((Groups[l+1].start-Groups[l].end) % H1, -1);
}
cout << res + N1 + N2;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIHBhaXI8aW50LGludD4gUElJOwoKY29uc3QgaW50IE1BWE49MmU1KzU7CmNvbnN0IGludCBMT0c9MTk7CmNvbnN0IGludCBCQVNFPTE8PExPRzsKCmludCB0cmVlMVsyKkJBU0UrNV07CmludCB0cmVlMlsyKkJBU0UrNV07CmludCBuOwpsb25nIGxvbmcgTjEsSDEsTjIsSDI7CmxvbmcgbG9uZyB4W01BWE5dOwpsb25nIGxvbmcgaFtNQVhOXTsKCnZlY3RvcjxwYWlyPGludCxpbnQ+PnVzZWQ7CgpzdHJ1Y3QgR3JvdXAKewogICAgaW50IGNvdW50OwogIGxvbmcgbG9uZyBzdGFydDsKICBsb25nIGxvbmcgZW5kOwoKfTsKClBJSSBxdWVyeTEgKGxvbmcgbG9uZyBuKQp7CiAgICBpbnQgaWR4PTE7CiAgICBpbnQgc3VtPTA7CiAgICB3aGlsZShpZHg8QkFTRSkKICAgIHsKICAgICAgICBpZih0cmVlMVtpZHgqMisxXStzdW0+bikKICAgICAgICB7CiAgICAgICAgICAgIGlkeD1pZHgqMisxOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBpZHg9aWR4KjI7CiAgICAgICAgICAgIHN1bSs9dHJlZTFbaWR4KzFdOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiB7aWR4LUJBU0Usc3VtfTsKfQpsb25nIGxvbmcgcXVlcnkyKGludCBsLCBpbnQgcikKewogICAgbCs9QkFTRS0xOwogICAgcis9QkFTRSsxOwogICAgbG9uZyBsb25nIHJlcz0wOwogICAgd2hpbGUobC8yIT1yLzIpCiAgICB7CiAgICAgICAgaWYobCUyPT0wKQogICAgICAgIHsKICAgICAgICAgICAgcmVzKz10cmVlMltsKzFdOwogICAgICAgIH0KICAgICAgICBpZihyJTI9PTEpCiAgICAgICAgewogICAgICAgICAgICByZXMrPXRyZWUyW3ItMV07CiAgICAgICAgfQogICAgICAgIGwvPTI7CiAgICAgICAgci89MjsKICAgIH0KICAgIHJldHVybiByZXM7Cn0Kdm9pZCB1cGRhdGUoaW50IGlkeCwgaW50IHZhbCkKewogICAgaWYgKGlkeCA9PSAwKSByZXR1cm47CgogICAgaW50IGFkZCA9IHZhbCAqICgoaWR4K0gyLTEpIC8gSDIpOwogICAgaWR4Kz1CQVNFOwogICAgdHJlZTFbaWR4XSs9dmFsOwogICAgdHJlZTJbaWR4XSs9YWRkOwogICAgaWR4Lz0yOwogICAgd2hpbGUoaWR4KQogICAgewogICAgICAgIHRyZWUxW2lkeF09dHJlZTFbaWR4KjJdK3RyZWUxW2lkeCoyKzFdOwogICAgICAgIHRyZWUyW2lkeF09dHJlZTJbaWR4KjJdK3RyZWUyW2lkeCoyKzFdOwogICAgICAgIGlkeC89MjsKICAgIH0KCn0KYm9vbCBjaGVjayAobG9uZyBsb25nIG4xLCBsb25nIGxvbmcgbjIpCnsKICAgIFBJSSBxMT1xdWVyeTEobjEpOwogICAgaW50IGF0aWR4PXRyZWUxW3ExLmZpcnN0K0JBU0VdOwogICAgbjEtPXExLnNlY29uZDsKICAgIGF0aWR4LT1uMTsKICAgIGludCBuZWVkZWQgPSBhdGlkeCAqICgocTEuZmlyc3QrSDItMSkvSDIpOyAgIC8vIG92ZXJmbG93CgogICAgLy8gY3phc2FtaSBuaWUgdHJ6ZWJhIHJvYmljIHF1ZXJ5PwogICAgbG9uZyBsb25nIHEyPXF1ZXJ5MigwLCBxMS5maXJzdC0xKTsKCiAgICAvKmlmKG4yPj1xMituZWVkZWQpCiAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7Ki8KCiAgICByZXR1cm4gbjIgPj0gcTIrbmVlZGVkOwp9CnZlY3RvcjxHcm91cD5Hcm91cHM7CmludCBtYWluKCkKewogICAgY2luPj5uOwogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKQogICAgewogICAgICAgIGNpbj4+eFtpXT4+aFtpXTsKICAgIH0KICAgIGNpbj4+TjE+PkgxPj5OMj4+SDI7CiAgICBpZihIMj5IMSkKICAgIHsKICAgICAgICBzd2FwKEgxLEgyKTsKICAgICAgICBzd2FwKE4xLE4yKTsKICAgIH0KICAgIGludCBsPTA7CiAgICBpbnQgcj0wOwogICAgbG9uZyBsb25nIGVuZDsKICAgIHdoaWxlKGw8bikKICAgIHsKICAgICAgICBlbmQ9eFtsXStoW2xdOwogICAgICAgIHI9bCsxOwogICAgICAgIHdoaWxlKHI8biBhbmQgZW5kPj14W3JdKQogICAgICAgIHsKICAgICAgICAgICAgZW5kPW1heChlbmQsIHhbcl0raFtyXSk7CiAgICAgICAgICAgIHIrKzsKICAgICAgICB9CiAgICAgICAgR3JvdXBzLnB1c2hfYmFjayh7ci1sLCB4W2xdLCBlbmR9KTsKICAgICAgICBsPXI7CiAgICB9CiAgICB1c2VkLnJlc2l6ZShHcm91cHMuc2l6ZSgpLCB7MExMLCAwTEx9KTsKICAgIHI9MTsKICAgIGxvbmcgbG9uZyBuMT1OMTsKICAgIGxvbmcgbG9uZyBuMj1OMjsKICAgIGxvbmcgbG9uZyBoMT1IMTsKICAgIGxvbmcgbG9uZyBoMj1IMjsKICAgIGxvbmcgbG9uZyBjdXI9R3JvdXBzWzBdLmNvdW50OwogICAgbG9uZyBsb25nIHJlcz1jdXI7CiAgICBmb3IoaW50IGw9MDsgbDxHcm91cHMuc2l6ZSgpOyBsKyspCiAgICB7CiAgICAgICAgbjErPXVzZWRbbF0uZmlyc3Q7CiAgICAgICAgbjIrPXVzZWRbbF0uc2Vjb25kOwogICAgICAgIHdoaWxlKGNoZWNrKG4xLG4yKSkKICAgICAgICB7CiAgICAgICAgICAgIGN1cis9R3JvdXBzW3JdLmNvdW50OwogICAgICAgICAgICByZXM9bWF4KHJlcyxjdXIpOwogICAgICAgICAgICBsb25nIGxvbmcgbGVuPUdyb3Vwc1tyXS5zdGFydC1Hcm91cHNbci0xXS5lbmQ7CiAgICAgICAgICAgIGxvbmcgbG9uZyB0YWtlTG93PTA7CiAgICAgICAgICAgIGxvbmcgbG9uZyB0YWtlSGlnaD1sZW4vSDE7CiAgICAgICAgICAgIGlmKHRha2VIaWdoPm4xKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0YWtlTG93PSh0YWtlSGlnaC1uMSkqKEgxL0gyKTsKICAgICAgICAgICAgICAgIGlmKHRha2VMb3c+bjIpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0YWtlSGlnaD1uMTsKICAgICAgICAgICAgICAgIG4xPTA7CiAgICAgICAgICAgICAgICBuMi09dGFrZUxvdzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG4xIC09IHRha2VIaWdoOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHVzZWRbcl09e3Rha2VIaWdoLCB0YWtlTG93fTsKICAgICAgICAgICAgbGVuICU9IEgxOwogICAgICAgICAgICB1cGRhdGUobGVuLCAxKTsKCiAgICAgICAgICAgIHIrKzsKCiAgICAgICAgfQogICAgICAgIGN1ci09R3JvdXBzW2xdLmNvdW50OwogICAgICAgIHVwZGF0ZSgoR3JvdXBzW2wrMV0uc3RhcnQtR3JvdXBzW2xdLmVuZCkgJSBIMSwgLTEpOwoKICAgIH0KICAgIGNvdXQgPDwgcmVzICsgTjEgKyBOMjsKICAgIHJldHVybiAwOwp9Cg==