import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;
public class Main {
private static Scanner cin;
public static void main(String args[]) throws Exception {
cin = new Scanner(System.in);
LinkedList<Apple> list = new LinkedList<Apple>();
int n = cin.nextInt();
int s = cin.nextInt();
int a = cin.nextInt();
int b = cin.nextInt();
int height = 0;
int strength = 0;
int count = 0;
for(int i = 0; i<n;i++) {
height = cin.nextInt();
strength = cin.nextInt();
if((a+b)>=height) {
Apple t = new Apple(height,strength);
list.add(t);
}
}
Object[] apples = list.toArray();
Arrays.sort(apples);
for(Object apple :apples) {
Apple tmp = (Apple)apple;
s = s-tmp.getStrength();
if(s >= 0) {
count++;
}
}
System.out.println(count);
}
}
class Apple implements Comparable<Object>{
private int height;
private int strength;
public Apple(int height, int strength) {
this.height = height;
this.strength = strength;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getStrength() {
return strength;
}
public void setStrength(int strength) {
this.strength = strength;
}
@Override
public int compareTo(Object o) {
// TODO Auto-generated method stub
Integer a = new Integer(strength);
Apple t = (Apple)o;
Integer b = new Integer(t.getStrength());
return a.compareTo(b);
}
}