#include<bits/stdc++.h>
using namespace std;
const int N=2010;
int a[N],b[N];
int f[N];
int c[4];
int pos1[N],pos2[N];
bool cmp1(int i,int j){
return a[i]<a[j];
}
bool cmp2(int i,int j){
return b[i]>b[j];
}
int main(){
int n;
cin>>n;
cin>>c[1]>>c[2]>>c[3];
for(int i=1;i<=n;i++){
cin>>a[i]>>b[i];
f[i]=a[i]*c[1]+b[i]*c[2];
}
int ans=0;
for(int i=1;i<=n;i++) pos1[i]=i;//初始化很重要
sort(pos1+1,pos1+n+1,cmp1);
for(int i=1;i<=n;i++){//枚举a0
priority_queue<int>q;//大根堆
int a0=a[pos1[i]];
for(int j=i;j<=n;j++) pos2[j]=pos1[j];
sort(pos2+i,pos2+n+1,cmp2);//降序排序b
for(int j=i;j<=n;j++){//枚举b0
q.push(f[j]);//在枚举b的时候把当前的加入,因为大根堆内的只能有比b大的梨子
int b0=b[pos2[j]];
// cout<<a0<<" "<<b0<<"*\n";
int k=a0*c[1]+b0*c[2]+c[3];//k是降序的
while(!q.empty() && q.top()>k)q.pop();//把再也不可能合法的剔除
int s=q.size();
ans=max(ans,s);
}
}
cout<<ans;
return 0;
}
WA 0求救