#include<cstdio>#include<algorithm>#include<iostream>#include<vector>usingnamespacestd;structP{intstart,end,e;};boolcmp(constP&a,constP&b){returna.start<b.start;}intN,M,R;structPa[1002];intdp[1002];intmain(){scanf("%d %d %d",&N,&M,&R);inti,j;for(i=0;i<M;i++){structPp;scanf("%d %d %d",&p.start,&p.end,&p.e);// Convert to weighted interval DP
p.end+=R;a[i]=p;}sort(a,a+M,cmp);for(i=0;i<M;++i){dp[i]=a[i].e;for(j=0;j<i;++j){// Select all previous time periods allowed by current period and take maximum value
if(a[j].end<=a[i].start)dp[i]=max(dp[i],dp[j]+a[i].e);}}cout<<*max_element(dp,dp+M)<<endl;return0;}