#include"iostream"
#include"deque"
#include<string.h>
#include"algorithm"
using namespace std;
const int K=1e4+5,N=5e2+5;
struct node{int x,f,c;}stn[N];
bool cmp(node a,node b){return a.x<b.x;}
int k,e,n,sum;
long long f[N][K];
int main(){
scanf("%d%d%d",&k,&e,&n);
memset(f,0x3f,sizeof(f));
f[0][0]=0;
for(int i=1,a,b,c;i<=n;i++){
scanf("%d%d%d",&a,&b,&c);
stn[i]={a,b,c};
f[i][0]=0;
}sort(stn+1,stn+n+1,cmp);
for(int i=1;i<=n+1;i++){
sum+=stn[i].f;
deque<pair<long long,int>> q;
q.push_back({0,0});
for(int j=1;j<=min(sum,k);j++){
while(!q.empty()&&j-q.front().second>stn[i].f)q.pop_front();
while(!q.empty()&&q.back().first>=f[i-1][j]+1ll*j*j*(stn[i].x-stn[i-1].x)-j*stn[i].c)q.pop_back();
q.push_back({f[i-1][j]+1ll*j*j*(stn[i].x-stn[i-1].x)-j*stn[i].c,j});
f[i][j]=q.front().first+1ll*j*stn[i].c;
}
}
printf("%lld",f[n][k]+k*k*(e-stn[n].x));
return 0;
}