Link to this code: https://cses.fi/paste/75817c5aac1af2f765da4a/
#include<bits/stdc++.h>
using namespace std;
int main() {
  int n,left=0,right=n,mid;
  cin>>n;
  vector<vector<int>>p(n,vector<int>(3));
  for(int i=0;i<n;i++){
   for(int j=0;j<3;j++){
    cin>>p[i][j];
   }
  }
  long long dp[n+1];
  dp[0]=0;
  sort(p.begin(),p.end(),[&](auto &a,auto &b){
    return a[1]<b[1];
  });
  auto search=[&](int val){
    left=0,right=n;
   while(left<right){
    mid=left+(right-left)/2;
    if(p[mid][1]<val){
      left=mid+1;
    }else{
      right=mid;
    }
   }
   return right;
  };

  for(int i=0;i<n;i++)
    dp[i+1]=max(dp[i],dp[search(p[i][0])]+p[i][2]);
  
  cout<<dp[n];
}