#include <bits/stdc++.h>
using namespace std;
struct pt {
  int a, b;
};
int n, m, i, a, b;
vector<pt> t, g;
bool cmpt(pt x, pt y) { return x.a < y.a || (x.a == y.a && x.b > y.b); }
bool cmpg(pt x, pt y) { return x.a + x.b > y.a + y.b; }
int main() {
  while (0) {
  };
  cin >> n >> m;
  for (i = 1; i <= n; i++) {
    cin >> a >> b;
    if (b >= 0)
      t.push_back({a, b});
    else
      g.push_back({a, b});
  }
  sort(t.begin(), t.end(), cmpt);
  sort(g.begin(), g.end(), cmpg);
  for (i = 0; i < t.size(); i++) {
    if (m < t[i].a) {
      cout << "NO";
      return 0;
    }
    m += t[i].b;
  }
  for (i = 0; i < g.size(); i++) {
    if (m < g[i].a) {
      cout << "NO";
      return 0;
    }
    m += g[i].b;
  }
  if (m < 0)
    cout << "NO";
  else
    cout << "YES";
}
