//@author :: Abhimanyu Chauhan (sheer will nothing else ...)
#include<bits/stdc++.h>
#define f first
#define sz(a) ((int)(a).size())
#define s second
#define present(c,x) ((c).find(x)!=(c).end())
#define all(v) v.begin(),v.end()
#define pii pair<int,int>
#define pil pair<int,long long>
#define pll pair<long long , long long>
#define vpii vector<pii>
#define vpil vector<pil>
#define vpll vector<pll>
#define eb emplace_back
#define mem(x) memset(x , 0 , sizeof(x))
#define pb push_back
#define fo(i,n) for(int i=0;i<n;i++)
#define Fo(i,k,n) for(int i=k;i<n;i++)
#define vi vector<int>
#define vll vector<ll>
#define deb(x) cout << #x << " " << x << endl
using namespace std;
using ll = long long;
using lld = long double;
using l64 = int64_t;
const int oo = 0x3f3f3f3f;
const ll MOD = 1000000007;
#define ar array<int,3>
//deadline -> 2
//duration -> 1
//reward -> 0
const int N = 1001;
int dp[N][N * 102];
int n , t;
vector<ar> jobs(N);
int fun(int i , int j){
if(i == n)
return 0;
auto &res = dp[i][j];
if(res != -1)
return res;
//at ith job , have choice to take up this job or reject it
int ans = 0;
//can take this job only when this is true
if(jobs[i][1] + j <= min(jobs[i][2] , t))
ans = jobs[i][0] + fun(i + 1 , j + jobs[i][1]);
// leave this job , move to next without changing the time j
ans = max(ans , fun(i + 1 , j));
return res = ans;
}
signed main(){
#ifndef ONLINE_JUDGE
// freopen("in.txt","r",stdin);
#endif
memset(dp , -1 , sizeof(dp));
ios_base::sync_with_stdio(0);cin.tie(0);
cin >> t >> n;
fo(j , 3)
fo(i , n)
cin >> jobs[i][j];
sort(jobs.begin() , jobs.begin() + n , [&](const ar &a ,const ar &b){
if(a[2] != b[2])
return a[2] < b[2];
return a < b;
});
cout << fun(0 , 0) << "\n";
return 0;
}
Ly9AYXV0aG9yIDo6IEFiaGltYW55dSBDaGF1aGFuIChzaGVlciB3aWxsIG5vdGhpbmcgZWxzZSAuLi4pCgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgoKCiNkZWZpbmUgZgkJCWZpcnN0CiNkZWZpbmUgc3ooYSkgICgoaW50KShhKS5zaXplKCkpCiNkZWZpbmUgcwkJCXNlY29uZAojZGVmaW5lIHByZXNlbnQoYyx4KSAoKGMpLmZpbmQoeCkhPShjKS5lbmQoKSkKI2RlZmluZSBhbGwodikJCXYuYmVnaW4oKSx2LmVuZCgpCiNkZWZpbmUgcGlpIAkJCXBhaXI8aW50LGludD4KI2RlZmluZSBwaWwgCQlwYWlyPGludCxsb25nIGxvbmc+CiNkZWZpbmUgcGxsIAkJcGFpcjxsb25nIGxvbmcgLCBsb25nIGxvbmc+CiNkZWZpbmUgdnBpaSAJCXZlY3RvcjxwaWk+CiNkZWZpbmUgdnBpbCAJCXZlY3RvcjxwaWw+CiNkZWZpbmUgdnBsbCAJCXZlY3RvcjxwbGw+CiNkZWZpbmUgZWIJCQllbXBsYWNlX2JhY2sKI2RlZmluZSBtZW0oeCkgCQkJbWVtc2V0KHggLCAwICwgc2l6ZW9mKHgpKQojZGVmaW5lIHBiCQkJcHVzaF9iYWNrCiNkZWZpbmUgZm8oaSxuKQkJZm9yKGludCBpPTA7aTxuO2krKykKI2RlZmluZSBGbyhpLGssbikJZm9yKGludCBpPWs7aTxuO2krKykKI2RlZmluZSB2aQkJCXZlY3RvcjxpbnQ+CiNkZWZpbmUgdmxsCQkJdmVjdG9yPGxsPgojZGVmaW5lIGRlYih4KQkJY291dCA8PCAjeCA8PCAiICIgPDwgeCA8PCBlbmRsCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBsbCAgPSBsb25nIGxvbmc7CnVzaW5nIGxsZCA9IGxvbmcgZG91YmxlOwp1c2luZyBsNjQgPSBpbnQ2NF90OwoKY29uc3QgaW50IG9vID0gMHgzZjNmM2YzZjsKY29uc3QgbGwgTU9EID0gMTAwMDAwMDAwNzsKI2RlZmluZSBhciBhcnJheTxpbnQsMz4KCi8vZGVhZGxpbmUgLT4gMgovL2R1cmF0aW9uIC0+IDEKLy9yZXdhcmQgLT4gMAoKY29uc3QgaW50IE4gPSAxMDAxOwppbnQgZHBbTl1bTiAqIDEwMl07CmludCBuICwgdDsKdmVjdG9yPGFyPiBqb2JzKE4pOwoKaW50IGZ1bihpbnQgaSAsIGludCBqKXsKICAgIGlmKGkgPT0gbikKICAgICAgICByZXR1cm4gMDsKICAgIAogICAgYXV0byAmcmVzID0gZHBbaV1bal07CiAgICBpZihyZXMgIT0gLTEpCiAgICAgICAgcmV0dXJuIHJlczsKCiAgICAvL2F0IGl0aCBqb2IgLCBoYXZlIGNob2ljZSB0byB0YWtlIHVwIHRoaXMgam9iIG9yIHJlamVjdCBpdAogICAgaW50IGFucyA9IDA7CgogICAgLy9jYW4gdGFrZSB0aGlzIGpvYiBvbmx5IHdoZW4gdGhpcyBpcyB0cnVlCiAgICBpZihqb2JzW2ldWzFdICsgaiA8PSBtaW4oam9ic1tpXVsyXSAsIHQpKQogICAgICAgIGFucyA9IGpvYnNbaV1bMF0gKyBmdW4oaSArIDEgLCBqICsgam9ic1tpXVsxXSk7CgogICAgLy8gbGVhdmUgdGhpcyBqb2IgLCBtb3ZlIHRvIG5leHQgd2l0aG91dCBjaGFuZ2luZyB0aGUgdGltZSBqIAogICAgYW5zID0gbWF4KGFucyAsIGZ1bihpICsgMSAsIGopKTsKICAgIHJldHVybiByZXMgPSBhbnM7Cn0KCnNpZ25lZCBtYWluKCl7CgojaWZuZGVmIE9OTElORV9KVURHRSAKLy8gICAgZnJlb3BlbigiaW4udHh0IiwiciIsc3RkaW4pOwojZW5kaWYKICAgIG1lbXNldChkcCAsIC0xICwgc2l6ZW9mKGRwKSk7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7CgogICAgY2luID4+IHQgPj4gbjsKICAgIGZvKGogLCAzKQogICAgICAgIGZvKGkgLCBuKQogICAgICAgICAgICBjaW4gPj4gam9ic1tpXVtqXTsKICAgICAgICAKICAgIHNvcnQoam9icy5iZWdpbigpICwgam9icy5iZWdpbigpICsgbiAsIFsmXShjb25zdCBhciAmYSAsY29uc3QgYXIgJmIpewogICAgICAgICAgICBpZihhWzJdICE9IGJbMl0pCiAgICAgICAgICAgICAgICByZXR1cm4gYVsyXSA8IGJbMl07CiAgICAgICAgICAgIHJldHVybiBhIDwgYjsKICAgIH0pOwogICAKICAgIGNvdXQgPDwgZnVuKDAgLCAwKSA8PCAiXG4iOwogICAgcmV0dXJuIDA7Cn0K