#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct order{
int start;
int dest;
int pss;
int prft;
};
vector<order> vb;
int cap,b,num_order;
int result;
int passenger_cap[10];
int solve(int position_order,int max)
{
if(result<max)
result=max;
int f;
while(position_order<=(num_order-1))
{
f=0;
for(int i=vb[position_order].start;i<vb[position_order].dest;i++)
{
passenger_cap[i]+=vb[position_order].pss;
if(passenger_cap[i]>cap)
{
f=1;
//break;
}
}
if(!f)
{
solve(position_order+1,max+vb[position_order].prft);
}
for(int i=vb[position_order].start;i<vb[position_order].dest;i++)
passenger_cap[i]-=vb[position_order].pss;
position_order++;
}
return 0;
}
int main()
{
int x,y,z;
order o;
while(cin>>cap)
{
cin>>b>>num_order;
if(cap==0 && b==0 && num_order==0)
break;
vb.clear();
for(int i=0;i<num_order;i++)
{
cin>>x>>y>>z;
o.start=x;
o.dest=y;
o.pss=z;
o.prft=(y-x)*z;
vb.push_back(o);
}
for(int i=0;i<10;i++)
passenger_cap[i]=0;
result=0;
solve(0,0);
cout<<result<<"\n";
}
return 0;
}