Drop7은 7×7 세로 격자에서 혼자 하는 게임이다. 처음에 격자는 비어 있다. 매 턴마다 1부터 7까지의 수가 적힌 원반을 하나 받고, 일곱 개의 열 중 하나를 골라 위에서 떨어뜨린다. 원반은 고른 열을 따라 내려가다가 그 열에 이미 쌓여 있는 가장 높은 원반 위에 멈춘다. 열이 비어 있으면 바닥까지 내려가 맨 아랫줄에 놓인다.
원반을 떨어뜨린 뒤에는 자기 수가 그룹 열의 크기나 그룹 행의 크기와 같은 원반이 모두 사라진다. 사라질 원반은 한꺼번에 없어진다. 그다음 아래에 있던 원반이 사라진 원반은 모두 갈 수 있는 만큼 곧장 내려온다. 이어서 판에 남은 원반 전체를 다시 검사하고, 조건에 맞는 원반이 하나도 없을 때까지 이 과정을 반복한다. 더 사라질 원반이 없으면 다음 턴으로 넘어간다.
원반의 그룹 열은 자기 자신을 포함해 같은 열에 쌓여 있는 원반의 개수다. 예를 들어 아래에서부터 7과 7이 쌓인 열에 3을 떨어뜨리면 그 열의 원반이 세 개가 되므로 3이 사라지고 7 두 개는 남는다. 낙하 한 번이 연쇄를 일으키기도 한다. 아래에서부터 5, 5, 4가 쌓인 열에 3을 떨어뜨리면 열의 크기가 4이므로 먼저 4가 사라진다. 그러면 3이 5 두 개 위로 내려오고 열의 크기가 3이 되어 3도 사라진다.
원반의 그룹 행은 자기 자신을 포함해 같은 행에서 빈칸 없이 옆으로 이어진 원반의 개수다. 어떤 행에 3과 3이 나란히 놓여 있고 그 옆 칸에 원반이 하나 내려와 세 칸이 이어지면, 두 3은 그룹 행의 크기가 3이 되어 함께 사라진다.
빈 판에서 시작해 한 게임의 낙하 기록을 받는다. 게임을 그대로 진행해 마지막 판의 상태를 출력하면 된다.
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 떨어뜨리는 원반의 개수 n (1≤n≤1000)이 주어진다. 다음 n개의 줄에는 두 정수 vi와 ci (1≤vi,ci≤7)가 주어진다. 이는 i번째 턴에 수 vi가 적힌 원반을 ci번 열에 떨어뜨린다는 뜻이다. 열은 왼쪽부터 1번에서 7번까지 번호를 매긴다. 마지막 테스트 케이스 다음 줄에는 0 하나가 주어진다.
각 테스트 케이스마다 길이가 7인 줄을 일곱 개 출력한다. 첫 줄이 격자의 맨 윗줄이고 일곱째 줄이 맨 아랫줄이다. 원반이 있는 칸에는 그 원반의 수를, 빈칸에는 우물 정 기호(#)를 출력한다.
게임 도중 원반 7개가 이미 쌓여 있는 열에 원반을 떨어뜨리면, 그 테스트 케이스는 격자 대신 Game Over! 한 줄만 출력한다. 그 테스트 케이스에 남은 낙하는 읽기만 하고 판에 반영하지 않는다.
연속한 두 테스트 케이스의 출력 사이에는 빈 줄을 하나 넣는다. 마지막 테스트 케이스 뒤에는 빈 줄을 넣지 않는다.