#include <bits/stdc++.h>
const double pi = acos(-1.0);
using namespace std;
int n;
struct node {
  long long a, b, h;
};
struct DD {
  long long h;
  int i;
};
node data[100010];
bool cmp(const node &a, const node &b) {
  if (b.b == a.b) return a.a > b.a;
  return a.b > b.b;
}
long long ans[100010];
priority_queue<DD> p_que;
bool operator<(DD a, DD b) { return a.h < b.h; }
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++)
    scanf("%I64d%I64d%I64d", &data[i].a, &data[i].b, &data[i].h);
  sort(data, data + n, cmp);
  for (int i = 0; i < n; i++) {
    ans[i] = data[i].h;
    while (!p_que.empty() && data[i].b <= data[(p_que.top()).i].a) p_que.pop();
    if (!p_que.empty()) ans[i] = data[i].h + (p_que.top()).h;
    p_que.push({ans[i], i});
  }
  printf("%I64d\n", *max_element(ans, ans + n));
  return 0;
}
