#include #include #include using namespace std; #define ll long long #define pb push_back #define mp make_pair int n, c; vector> weight; int dp[100][30000]; int rec(int idx, int w){ if(idx == c) return 0; if(dp[idx][w] != -1){ return dp[idx][w]; } int result = -2e9; result = max(result, rec(idx + 1, w)); if(weight[idx].second <= w){ result = max(result, rec(idx + 1, w - weight[idx].second + weight[idx].first) + 1); } dp[idx][w] = result; return result; } int main(){ ios_base::sync_with_stdio(false); cout.tie(0); cin.tie(0); cin >> n >> c; for(int i = 0; i < c; i++){ int a, b; cin >> a >> b; weight.pb(mp(b, a)); } sort(weight.rbegin(), weight.rend()); for(int i = 0; i < c; i++){ for(int j = 0; j < 30000; j++){ dp[i][j] = -1; } } cout << rec(0, n) << endl; return 0; }