?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 #include <iostream> using namespace std;   int dir[5010];   void remove(){     int cnt = 0;     for(int i = 0 ; i < 5010 ; i++){         if( dir[i] == 31 ) dir[i] = 0,cnt++;     }     for(int k = 0 ; k <= cnt ; k++)     for(int i = 5009 ; i > 0 ; i--){         if( dir[i] && !dir[i-1] ){             swap(dir[i],dir[i-1]);         }     } }   void tate(int x,int l){     for(int i = 1 ; i <= l ; i++) dir[5010-i] |= (1<<x);           for(int _ = 0 ; _ < 10 ; _++)     for(int i = 5010-l+_ ; i > 0 ; i--){         if( (dir[i] >> x & 1) && (dir[i-1] >> x & 1) == 0 ){             dir[i] -= (1<<x);             dir[i-1] += (1<<x);         }else{             break;         }     }     remove(); }   void yoko(int x,int l){     int mask = ((1<<l)-1) << x;     dir[5009] = mask;     for(int i = 5009 ; i > 0 ; i--){         if( dir[i] && !(dir[i-1] & mask) ){             dir[i] -= mask;             dir[i-1] += mask;         }else{             break;         }     }     remove(); } int main(){     int n;     while(cin >> n && n){         for(int i = 0 ; i <= 5009 ; i++)             dir[i] = 0;                   for(int i = 0 ; i < n ; i++){             int d,l,x;             cin >> d >> l >> x;             x--;             if(d==1){                 yoko(x,l);             }else{                 tate(x,l);             }             int f = 0;             if( i == 10 ) continue;             for(    int j = 5009 ; j >= 0 ; j--){                 if(f||dir[j]){                     //cout << j << " " << (dir[j]&1) << (dir[j]&2) << (dir[j]&4) << (dir[j]&8) << (dir[j]&16) << endl; ;                     f=true;                 }             }         //  cout << endl;         }         int ans = 0;         for(int i = 0 ; i < 5010 ; i++)             ans += __builtin_popcount(dir[i]);         cout << ans << endl;     } } 