// luogu-judger-enable-o2
#include<bits/stdc++.h>
inline const void read(int &a)
{
a=0;char c=getchar();
while(c<'0'||c>'9')c=getchar();
while(c>='0'&&c<='9')
{
a=(a<<1)+(a<<3)+c-'0';
c=getchar();
}
}
const int maxn=2e5;
int limit[maxn],lazy[maxn];
inline const void update(int p)
{
limit[p]=std::max(limit[p<<1],limit[p<<1|1]);
}
inline const void push_col(int p)
{
if(lazy[p])
{
limit[p<<1]+=lazy[p];limit[p<<1|1]+=lazy[p];
lazy[p<<1]+=lazy[p];lazy[p<<1|1]+=lazy[p];
lazy[p]=0;
}
}
inline const int query(int p,int l,int r,int ll,int rr)
{
if(l>rr||r<ll)return 0;
if(l>=ll&&r<=rr)return limit[p];
push_col(p);
int mid=(l+r)>>1,ans=std::max(query(p<<1,l,mid,ll,rr),query(p<<1|1,mid+1,r,ll,rr));
return ans;
}
inline const void modify(int p,int l,int r,int ll,int rr,int mark)
{
if(l>rr||r<ll)return ;
if(l>=ll&&r<=rr){lazy[p]+=mark;limit[p]+=mark;return ;}
push_col(p);
int mid=(l+r)>>1;
modify(p<<1,l,mid,ll,rr,mark);modify(p<<1|1,mid+1,r,ll,rr,mark);
update(p);
}
struct team
{
int start,end,num;
}t[maxn];
inline const bool comp(const team&a,const team&b)
{
if(a.end<b.end)return true;
return false;
}
int main()
{
memset(limit,0,sizeof(limit));
int k,n,m,ans=0;
read(n);read(m);read(k);
for(int i=1;i<=k;i++){read(t[i].start);read(t[i].end);read(t[i].num);}
std::sort(t+1,t+1+k,comp);
for(int i=1;i<=k;i++)
{
int load=std::min(m-query(1,1,n,t[i].start,t[i].end-1),t[i].num);
if(load)modify(1,1,n,t[i].start,t[i].end-1,load);
ans+=load;
}
std::cout<<ans;
return 0;
}