#include <vector>
#include <list>
#include <algorithm>
#include <string>
#include <map>
#include <set>
#include <queue>
#include <cstring>
#include <deque>
#include <cstdio>
#include <cmath>
#include <complex>
#include <iostream>
#include <iterator>

using namespace std;

#define reps(i,f,t) for(int i=f ; i<int(t) ; ++i)
#define rep(i,n) reps(i, 0, n) 

typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int,int> pii;

int find(vi& map, int mask)
{
	for(int i=map.size()-1; i>=0; --i){
		if(map[i] & mask)
			return i;
	}
	return -1;
}

bool add(vi& map, int y, int mask)
{
	if(y == map.size())
		map.push_back(mask);
	else
		map[y] |= mask;
	
	if(map[y] == 31){
		map.erase(map.begin()+y);
		return true;
	}
	else
		return false;
}

int main()
{
	int n;
	while(scanf("%d", &n), n){
		vi map;
		rep(i, n){
			int d, p, q;
			scanf("%d%d%d", &d, &p, &q);
			--q;
			if(d == 1){
				int mask = ((1<<p)-1) << q;
				add(map, find(map, mask) + 1, mask);
			}
			else{
				int mask = 1 << q;
				int y = find(map, mask) + 1;
				rep(j, p){
					if(add(map, y+j, mask))
						--y;
				}
			}
		}
		
		int ans = 0;
		rep(i, map.size())
			ans += __builtin_popcount(map[i]);
		printf("%d\n", ans);
	}
	
	return 0;
}