#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5e5 + 100;
struct ring {
  long long a, b, h;
} r[MAXN];
int n, na[MAXN], cnt = 1;
long long bit[MAXN];
long long dp;
bool cmp(ring x, ring y) { return x.b > y.b || (x.b == y.b && x.a > y.a); }
inline int lowbit(int x) { return x & (-x); }
void update(int x, long long v) {
  while (x <= cnt) {
    bit[x] = max(bit[x], v);
    x += lowbit(x);
  }
}
long long ask(int x) {
  long long ret = 0;
  while (x) {
    ret = max(bit[x], ret);
    x -= lowbit(x);
  }
  return ret;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%lld%lld%lld", &r[i].a, &r[i].b, &r[i].h);
    na[i] = r[i].a;
  }
  sort(r + 1, r + n + 1, cmp);
  sort(na + 1, na + n + 1);
  for (int i = 2; i <= n; i++)
    if (na[i] != na[cnt]) na[++cnt] = na[i];
  for (int i = 0; i <= cnt; i++) bit[i] = 0;
  long long ans = 0;
  for (int i = 1; i <= n; i++) {
    dp = r[i].h + ask(lower_bound(na + 1, na + cnt + 1, r[i].b) - na - 1);
    ans = max(ans, dp);
    update(lower_bound(na + 1, na + cnt + 1, r[i].a) - na, dp);
  }
  printf("%lld\n", ans);
}
