#include <bits/stdc++.h>
using namespace std;
struct ring {
  long long int a, b, h;
};
bool cmp(const ring &i, const ring &j) {
  if (i.b - j.b) return i.b > j.b;
  return i.a > j.a;
}
vector<ring> a;
long long int n;
vector<long long int> bit;
long long int maxf(long long int x) {
  long long int s = 0;
  for (; x > 0; x -= x & (-x)) s = max(s, bit[x]);
  return s;
}
void upd(long long int x, long long int a) {
  for (; x <= 2 * n; x += x & (-x)) bit[x] = max(bit[x], a);
}
int main() {
  long long int i, e = 1;
  cin >> n;
  a.resize(n), bit.resize(2 * n + 1, 0);
  vector<long long int> x, v(n);
  map<long long int, long long int> mp;
  for (i = 0; i < n; i++)
    cin >> a[i].a >> a[i].b >> a[i].h, x.push_back(a[i].a), x.push_back(a[i].b);
  sort(a.begin(), a.end(), cmp), sort(x.begin(), x.end());
  for (i = 0; i < 2 * n; i++)
    if (!mp[x[i]]) mp[x[i]] = e++;
  for (i = 0; i < n; i++) {
    v[i] = a[i].h + maxf(mp[a[i].b] - 1);
    upd(mp[a[i].a], v[i]);
  }
  cout << *max_element(v.begin(), v.end()) << endl;
}
