#include <bits/stdc++.h>
using namespace std;
const int MOD = (int)1e9 + 7;
const int MAXN = (int)103;
const int MAXK = (int)6e4 + 3;
const int infint = (int)1e9 + 3;
const long long inf = (long long)1e18;
pair<int, int> p[MAXN];
bool cmp(pair<int, int> a, pair<int, int> b) {
  if (a.second < 0 && b.second >= 0) return 0;
  if (a.second >= 0 && b.second < 0) return 1;
  if (a.second >= 0 && b.second >= 0) return a.first < b.first;
  return a.second - b.first > b.second - a.first;
}
int dp[MAXN][MAXK], n, r;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> r;
  for (int i = 1; i <= n; i++) cin >> p[i].first >> p[i].second;
  sort(p + 1, p + n + 1, cmp);
  for (int i = 0; i < MAXN; i++)
    for (int j = 0; j < MAXK; j++) dp[i][j] = -infint;
  dp[0][r] = 0;
  for (int i = 1; i <= n; i++)
    for (int j = 0; j < MAXK; j++) {
      dp[i][j] = max(dp[i][j], dp[i - 1][j]);
      int c = j - p[i].second;
      if (c >= 0 && c < MAXK && c >= p[i].first)
        dp[i][j] = max(dp[i][j], dp[i - 1][c] + 1);
    }
  int ans = 0;
  for (int i = 0; i < MAXK; i++) ans = max(ans, dp[n][i]);
  if (ans == n)
    cout << "YES";
  else
    cout << "NO";
}
