#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <cmath>
#include <cstdio>
#include <queue>
#include <map>
#include <iomanip>
#include <set>
#include <vector>
#include <sstream>
using namespace std;
const int maxn=100005;
struct node{
int k,cost,time;
}a[maxn];
struct Free{
int t,m;
}f[maxn];
int n,num=1,ans,used=1;
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i].k>>a[i].cost>>a[i].time;
for(int i=1;i<=n;i++){
if(a[i].k==0) {
ans+=a[i].cost;
f[num].m=a[i].cost;
f[num++].t=a[i].time;
}
else if(a[i].k==1){
int key=used,no=used;
while((a[i].time-f[key].t>45||a[i].cost>f[key].m)&&(key<num)) {
if(a[i].time-f[key].t>45) no++;
key++;
}
if(a[i].time-f[key].t<=45&&a[i].cost<=f[key].m) used=no+1;
else {used=no+1;ans+=a[i].cost;}
}
}
cout<<ans;
return 0;
}