只过了4,7,13
#include<bits/stdc++.h>
#define int long long
using namespace std;
struct Node{
int x,c,f;
bool operator<(const Node &r)const{
return x<r.x;
}
}a[1010];
int dp[1010][10010];
deque<int>q;
signed main(){
memset(dp,0x7f,sizeof(dp));
int K,e,n;
cin>>K>>e>>n;
dp[0][0]=0;
for(int i=1;i<=n;i++)cin>>a[i].x>>a[i].c>>a[i].f;
sort(a+1,a+n+1);
for(int i=1;i<=n;i++){
while(!q.empty())q.pop_back();
q.push_back(0);
for(int j=0;j<=K;j++){
while(!q.empty()&&j-q.front()>a[i].c)q.pop_front();
int k=q.front();
dp[i][j]=dp[i-1][k]+(j-k)*a[i].f+(a[i].x-a[i-1].x)*k*k;
while(!q.empty()&&dp[i-1][q.back()]+(j-q.back())*a[i].f+(a[i].x-a[i-1].x)*q.back()*q.back()>dp[i-1][j])q.pop_back();
q.push_back(j);
}
}
cout<<dp[n][K]+K*K*(e-a[n].x);
return 0;
}