#include<iostream>
#include<vector>
#include<cstring>
#include<algorithm>

using namespace std;

const int MAX = 370;
struct data{
  int s,g,r;
  bool operator < (const data& d) const { return s < d.s;}
};
int dp[2][MAX][MAX];
int N;
vector<data> V;

void init(){
  V.clear();
  memset(dp,0,sizeof(dp));
}

void input(){
  V.resize(N);

  for(int i = 0; i < N; i++)
    cin >> V[i].s >> V[i].g >> V[i].r;
}

void solve(){

  sort(V.begin(),V.end());

  for(int i = 0; i < N; i++){
    int now = i%2;
    int nex = 1-now;

    for(int j = 0; j < MAX; j++)
      for(int k = 0; k < MAX; k++){
	dp[nex][j][k] = max(dp[nex][j][k],dp[now][j][k]);
	if(j < V[i].s) dp[nex][V[i].g][k] = max(dp[nex][V[i].g][k],dp[now][j][k]+V[i].r);
	if(k < V[i].s) dp[nex][j][V[i].g] = max(dp[nex][j][V[i].g],dp[now][j][k]+V[i].r);
      }
  }

  int ans = 0;
  
  for(int i = 0; i < MAX; i++)
    for(int j = 0; j < MAX; j++) ans = max(ans,dp[N%2][i][j]);

  cout << ans << endl;
}

int main(){
  
  while(cin >> N && N){
    init();
    input();
    solve();
  }
  return 0;
}