#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
ll t,pr;
};
inline int read() {
ll s=0,t=1;
char c=getchar();
while(c<'0'||c>'9') {
if(c=='-')t=-1;
c=getchar();
}
while(c>='0'&&c<='9') {
s=s*10+c-'0';
c=getchar();
}
return s*t;
}
struct node1{
ll t,pr;
friend bool operator < (node1 a,node1 b){
return a.t==b.t?a.pr>b.pr:a.t>b.t;
}
};
priority_queue<node1>q1;
queue<node>q2;
ll n,ans;
int main(){
n=read();
for(ll i=1;i<=n;i++){
ll x=read();
ll pri=read();
ll ti=read();
bool flg1=0;
if(q1.empty()){
q1.push({ti,pri});
flg1=1;
}
auto p=q1.top();
while(!q1.empty()&&ti-p.t>45){
q1.pop();
}
if(x==0){
if(flg1==0)q1.push({ti,pri});
ans+=pri;
}else{
if(!q1.empty()){
bool flg=0;
int ttf;
while(!q1.empty()){
auto p=q1.top();
q1.pop();
if(p.pr<pri){
q2.push({p.t,p.pr});
}else{
flg=1;
break;
}
}
while(!q2.empty()){
auto p=q2.front();
q2.pop();
q1.push({p.t,p.pr});
}
if(flg==0){
ans+=pri;
}else{
}
}else{
ans+=pri;
}
}
}
cout<<ans;
return 0;
}