import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BOJ20061 { static int g[][] = new int[6][4]; static int b[][] = new int[4][6]; static int score = 0; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); for(int i = 0; i < n; i++) { StringTokenizer st = new StringTokenizer(br.readLine()); int t = Integer.parseInt(st.nextToken()); int x = Integer.parseInt(st.nextToken()); int y = Integer.parseInt(st.nextToken()); fill(t, x, y); boolean circle = IsLineAllSame(); while(circle) circle = IsLineAllSame(); IslightColor(); } System.out.println(score); System.out.println(total()); } static int total() { int sum = 0; for(int i = 0; i < 6; i++) { for(int j = 0; j < 4; j++) { if(g[i][j] == 1) sum++; } } for(int i = 0; i < 4; i++) { for(int j = 0; j < 6; j++) { if(b[i][j] == 1) sum++; } } return sum; } static void fill(int t, int x, int y) { int ig = 6; int ib = 6; if(t == 1) { for(int i = 0; i < 6; i++) { if(g[i][y] != 0) { ig = i; break; } } g[ig-1][y] = 1; for(int i = 0; i < 6; i++) { if(b[x][i] != 0) { ib = i; break; } } b[x][ib-1] = 1; }else if(t == 2) { for(int i = 0; i < 6; i++) { if(g[i][y] != 0 || g[i][y+1] != 0) { ig = i; break; } } g[ig-1][y] = 1; g[ig-1][y+1] = 1; for(int i = 0; i < 6; i++) { if(b[x][i] != 0) { ib = i; break; } } b[x][ib-1] = 1; b[x][ib-2] = 1; }else { for(int i = 0; i < 6; i++) { if(g[i][y] != 0) { ig = i; break; } } g[ig-1][y] = 1; g[ig-2][y] = 1; for(int i = 0; i < 6; i++) { if(b[x][i] != 0 || b[x+1][i] != 0) { ib = i; break; } } b[x][ib-1] = 1; b[x+1][ib-1] = 1; } } static void move(int d, int i) { if(d == 0) { for(int j = i; 0 < j; j--) { g[j][0] = g[j-1][0]; g[j][1] = g[j-1][1]; g[j][2] = g[j-1][2]; g[j][3] = g[j-1][3]; g[j-1][0] = g[j-1][1] = g[j-1][2] = g[j-1][3] = 0; } }else { for(int j = i; 0 < j; j--) { b[0][j] = b[0][j-1]; b[1][j] = b[1][j-1]; b[2][j] = b[2][j-1]; b[3][j] = b[3][j-1]; b[0][j-1] = b[1][j-1] = b[2][j-1] = b[3][j-1] = 0; } } } static boolean IsLineAllSame() { boolean check = false; for(int i = 0; i < 6; i++) { if(g[i][0] == 1 && g[i][1] == 1 && g[i][2] == 1 && g[i][3] == 1) { move(0, i); score++; check = true; break; } } for(int i = 0; i < 6; i++) { if(b[0][i] == 1 && b[1][i] == 1 && b[2][i] == 1 && b[3][i] == 1) { move(1, i); score++; check = true; break; } } return check; } static void IslightColor() { if(g[1][0] == 1 || g[1][1] == 1 || g[1][2] == 1 || g[1][3] == 1) move(0, 5); if(g[1][0] == 1 || g[1][1] == 1 || g[1][2] == 1 || g[1][3] == 1) move(0, 5); if(b[0][1] == 1 || b[1][1] == 1 || b[2][1] == 1 || b[3][1] == 1) move(1, 5); if(b[0][1] == 1 || b[1][1] == 1 || b[2][1] == 1 || b[3][1] == 1) move(1, 5); } }