#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int maxh, maxt, n;
struct food
{
int h;
int t;
int k;
};
food f[55];
int arr[55][810][810];
int main()
{
cin >> maxh >> maxt;
cin >> n;
for (int i = 1;i <= n;i++)
{
cin >> f[i].h >> f[i].t >> f[i].k;
}
for (int i = 1;i <= n;i++)
{
for (int j = 1;j <= maxh;j++)
{
for (int z = 1;z <= maxt;z++)
{
if (j >= f[i].h && z >= f[i].t)
{
arr[i][j][z] = max(arr[i-1][j][z], (arr[i - 1][j - f[i].h][z - f[i].t] + f[i].k));
}
else
{
arr[i][j][z] = arr[i-1][j][z];
}
}
}
}
cout << arr[n][maxh][maxt] << endl;
return 0;
}
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int maxtime, n;
struct t
{
int score;
int time;
};
t tm[10100];
int arr[10100][10100];
int main()
{
cin >> maxtime >> n;
for (int i = 1;i <= n;i++)
{
cin >> tm[i].score >> tm[i].time;
}
for (int i = 1;i <= n;i++)
{
for (int j = 1;j <= maxtime;j++)
{
if (j >= tm[i].time)
{
arr[i][j] = max(arr[i][j - tm[i].time] + tm[i].score, arr[i - 1][j]);
}
else
{
arr[i][j] = arr[i - 1][j];
}
}
}
cout << arr[n][maxtime] << endl;
return 0;
}
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int maxtime, n;
int times[10100], score[10010];
int f[10010];
int main()
{
cin >> maxtime >> n;
for (int i = 1;i <= n;i++)
{
cin >> score[i] >> times[i];
}
for (int i = 1;i <= n;i++)
{
for (int j = times[i];j <= maxtime;j++)
{
if (f[j - times[i]] + score[i] > f[j])
{
f[j] = f[j - times[i]] + score[i];
}
}
}
cout << f[maxtime]<< endl;
return 0;
}