#include <bits/stdc++.h>
const int maxn = 1e4 + 10;
using namespace std;
struct pnode {
  long long a, b;
};
pnode D[maxn], I[maxn];
int cmp1(pnode x, pnode y) { return x.a < y.a; }
int cmp2(pnode x, pnode y) {
  if (x.a + x.b == y.a + y.b) return x.a > y.a;
  return x.a + x.b > y.a + y.b;
}
int main() {
  long long n, r;
  int flag = 0;
  int i_tot = 0, d_tot = 0;
  scanf("%lld%lld", &n, &r);
  for (int i = 1; i <= n; i++) {
    long long a, b;
    scanf("%lld%lld", &a, &b);
    if (b < 0)
      I[i_tot++] = (pnode{a, b});
    else
      D[d_tot++] = (pnode{a, b});
  }
  sort(D, D + d_tot, cmp1);
  sort(I, I + i_tot, cmp2);
  for (int i = 0; i < d_tot && !flag; i++) {
    if (r >= D[i].a)
      r += D[i].b;
    else
      flag = 1;
  }
  for (int i = 0; i < i_tot && !flag; i++) {
    if (r >= I[i].a)
      r += I[i].b;
    else
      flag = 1;
  }
  if (flag == 0 && r >= 0)
    printf("YES");
  else
    printf("NO");
  return 0;
}
