#include <iostream>
#include <vector>
using namespace std;
#define UI unsigned int

string getM(char mask){
  string s;
  for( int i=4;i>=0;i-- ){
    if( mask & 1<<i ) s+="1";
    else s+="0";
  }
  return s;
}
void pr(vector<char> v){
  cout <<" ***** " << v.size() << endl;
  for( int i=v.size()-1;i>=0;i-- )
    cout << getM(v[i]) << endl;
}

int main(){
  int n, d,p,q, index;
  char ms[5], ful=0, mask;

  for( int i=0;i<5;i++ )
    ful += (ms[i]=1<<i);

  while( cin>>n && n ){
    vector<char> v;
    for( int lp=0;lp<n;lp++ ){
      //      cout << "lp="<<lp<<endl;

      cin >> d >> p >> q; // 向き・長さ・位置
      q--;

      if( d==1 ){ // 横向き
	mask=0;
	for( int i=0;i<p;i++ )	  mask |= ms[q+i];

	index=v.size()-1;
	for( ;index>=0;index-- )
	  if( v[index] & mask ) break;
	index++;
	if( index>=(int)v.size() ) v.push_back(mask);
	else v[index] |= mask;
      }else{ // 縦向き
	mask = ms[q];
	index=v.size()-1;
	for( ;index>=0;index-- )
	  if( v[index] & mask ) break;
	index++;
	for( int i=0;i<p;i++,index++ ){
	  if( index>=(int)v.size() )
	    v.push_back(mask);
	  else
	    v[index] |= mask;
	}
      }
      //      pr( v );

      // 消去チェック
      for( UI i=0;i<v.size();i++ ){
	if( v[i]==ful ){
	  v.erase( v.begin()+i );
	  i--;
	  //	  cout << "  ERASE" << endl;
	  //	  pr( v );
	}
      }
    }
    int ans=0;
    for( UI i=0;i<v.size();i++ ){
      for( int j=0;j<5;j++ )if( v[i] & 1<<j ) ans++;
    }
    cout << ans << endl;

    //    break;
  }

  return 0;
}