#include <bits/stdc++.h>
using namespace std;
int n;
struct node {
  long long otr, inr, ht;
  node(long long x, long long y, long long z) {
    this->otr = x;
    this->inr = y;
    this->ht = z;
  }
};
bool cmp(node &a, node &b) { return a.otr > b.otr; }
int main() {
  cin >> n;
  vector<node> v, main;
  stack<node> st;
  for (int i = 0; i < n; i++) {
    long long x, y, z;
    cin >> x >> y >> z;
    v.push_back(node(y, x, z));
  }
  sort(v.begin(), v.end(), cmp);
  long long h = v[0].ht;
  long long mn = v[0].inr;
  for (int i = 1; i < v.size(); i++) {
    if (v[i].otr != v[i - 1].otr) {
      main.push_back(node(v[i - 1].otr, mn, h));
      h = v[i].ht;
      mn = v[i].inr;
      continue;
    }
    h += v[i].ht;
    mn = min(mn, v[i].inr);
  }
  main.push_back(node(v[v.size() - 1].otr, mn, h));
  long long ans = 0, tmp = 0;
  for (int i = 0; i < main.size(); i++) {
    while (!st.empty() && main[i].otr <= st.top().inr) {
      tmp -= st.top().ht;
      st.pop();
    }
    tmp += main[i].ht;
    st.push(main[i]);
    ans = max(ans, tmp);
  }
  cout << ans << endl;
}
