import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

// Based in Kunyavskiy.kt
public class NickyWithoutMark {
	static class Exam {
		int s;
		int p;
		int e;
		int a;

		public Exam(int s, int p, int e, int a) {
			this.s = s;
			this.p = p;
			this.e = e;
			this.a = a;
		}
	}

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		Exam[] exams = new Exam[n];
		for (int i = 0; i < n; i++) {
			int s = scanner.nextInt();
			int p = scanner.nextInt();
			int e = scanner.nextInt();
			int a = scanner.nextInt();
			exams[i] = new Exam(s, p, e, a);
		}

		Integer[] dp = new Integer[n + 2];
		dp[0] = 0;
		for (int i = 1; i < n + 2; i++) {
			dp[i] = -1;
		}

		int prev = 0;
		for (Exam e : exams) {
			for (int l = n; l >= 0; l--) {
				if (dp[l] != -1) {
					dp[l] += e.s - prev;
				}
			}
			for (int l = n; l >= 0; l--) {
				if (l > 0 && dp[l - 1] >= e.a) {
					dp[l] = Math.max(dp[l], dp[l - 1] - e.a + (e.e - e.p));
				}
			}
			prev = e.e;
		}

		System.out.println(List.of(dp).indexOf(-1) - 1);
	}
}
