#include <bits/stdc++.h>
using namespace std;

struct Work {
	int S, E, P;
};

Work work[10001];
int M, hari_max = 0, memo[10001][10001];

int f(int N, int H){
	if (memo[N][H] != 0){
		return memo[N][H];
	}
	if (N < 1 || H < 1){
		return 0;
	} else {
		if (work[N].E <= H){
			int ambil = work[N].P + f(N-1, work[N].S - 1);
			int tidak_ambil = f(N-1, H);
			memo[N][H] = max(ambil, tidak_ambil);
			return memo[N][H];
		} else {
			memo[N][H] = f(N-1, H);
			return memo[N][H];
		}
	}
}

int main() {
	memset(memo, 0, sizeof(memo));
	cin >> M;
	for (int i = 1; i <= M; i++){
		cin >> work[i].S >> work[i].E >> work[i].P;
		hari_max = max(hari_max, work[i].E);
	}
	
	for (int i = 1; i < M; i++){
		for (int j = i+1; j <= M; j++){
			if (work[i].E > work[j].E){
				swap(work[i], work[j]);
			}
		}
	}
	
	cout << f(M, hari_max) << endl;
	
	return 0;
}