#include #define rep(i,n) for(int i=0;i<(n);i++) using namespace std; using lint=long long; template struct interval{ T l,r; int wt; bool operator<(const interval& I)const{ return make_tuple(r,l)> I(m); rep(i,m) scanf("%d%d%d",&I[i].l,&I[i].r,&I[i].wt), I[i].r++; sort(I.begin(),I.end()); int idx=0; // dp[x] = ([1, x) に含まれる区間だけを考えて, x の左に区切りを入れたときのスコアの最大値) vector dp(L+2,-INF),dp_max(L+2,-INF); dp[1]=0; dp_max[1]=0; for(int x=2;x<=L+1;x++){ while(idx