#include //#include using namespace std; //using namespace atcoder; using ll = long long; //using mint = modint998244353; template using pq = priority_queue, greater>; int main(){ cin.tie(nullptr); ios_base::sync_with_stdio(false); /* X>=Yであるカードはできるだけ後ろに回す。 Xpriority queue X>=Yであるカードについて考える。 Cの降順にX-Yが大きいものから順に使っていく。 ただし、使ったカード枚数がN-Cになった時点でYにする。 C-1のカードを追加するときは、X-Yが小さいカードから捨てていく。 */ ll N, S=0, C, X, Y; cin >> N; vector> v(N+1), v2(N+1); for (int i=1; i<=N; i++){ cin >> C >> X >> Y; if (X que, que2; for (int C=0; C<=N; C++){ for (auto z : v[C]){ que.push(z); S += z; if (que.size() > C){ ll w = que.top(); que.pop(); S -= w; } } } for (int C=N; C>=0; C--){ for (auto z : v2[C]){ que2.push(z); S += z; if (que2.size() > N-C){ ll w = que2.top(); que2.pop(); S -= w; } } } cout << S << endl; return 0; }