#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 105, MAX_R = 60005;
int n, r, a, b;
vector<pair<int, int> > inc, d;
int dp[MAX_R][MAX_N];
int main() {
  ios::sync_with_stdio(false);
  cin >> n >> r;
  for (int i = 0; i < n; i++) {
    cin >> a >> b;
    if (b >= 0) {
      inc.push_back({a, b});
    } else {
      d.push_back({max(a, -b) + b, b});
    }
  }
  sort(inc.begin(), inc.end());
  sort(d.begin(), d.end());
  int proj = 0;
  for (auto p : inc) {
    if (r >= p.first) {
      proj++;
      r += p.second;
    }
  }
  int len = d.size();
  for (int i = 0; i <= len; i++) {
    if (i == 0) {
      for (int j = 0; j <= r; j++) {
        dp[j][i] = proj;
      }
      continue;
    }
    int a = d[i - 1].first - d[i - 1].second;
    int b = d[i - 1].second;
    for (int j = 0; j <= r; j++) {
      if (j >= a) {
        dp[j][i] = max(dp[j][i - 1], 1 + dp[j + b][i - 1]);
      } else {
        dp[j][i] = dp[j][i - 1];
      }
    }
  }
  cout << dp[r][len] << endl;
}
