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

struct go_log{
    int tool;
    int price;
    int time;
};

int main(){
    int n = 0;
    cin >> n;
    
    int queue_max = 50;
    go_log gl_list[queue_max];

    int l = 0; //left point to subway
    int r = 0; //right point to subway
    int price_min = 0;
    
    for(int i = 0; i < n; i++){
        go_log gl;
        cin >> gl.tool >> gl.price >> gl.time;

        //remove > 45 mintue
        while(r > l){
           if((gl.time - gl_list[l % queue_max].time) <= 45) break;
           l = l + 1;
        }

        //subway
        if(gl.tool == 0){
            gl_list[r % queue_max] = gl;
            r = r + 1;
        }
        
        //bus
        if(gl.tool == 1){
            //has ticket in queue ?
            for(int k = l; k < r; k++){
                if(gl_list[k % queue_max].price >= gl.price){
                    gl.price = 0;
                    gl_list[k % queue_max].price = -1; //it is not use
                    break;
                }  
            }
        }
        
        price_min = price_min + gl.price;      
        //printf("[%d][%d][%d]\n", i + 1, gl.tool, gl.price);
    }
    
    cout << price_min << endl;
    return 0;
}