시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
정사각형 판 위에 여러 개의 ㄷ자 블록이 놓여 있다. ㄷ자 블록은 어떤 직사각형에서 더 작은 직사각형 하나를 잘라 낸 모양이다. 이때 잘라 낸 직사각형은 원래 직사각형의 네 변 중 정확히 한 변에 닿는다.
또 하나의 ㅗ자 블록이 주어진다. 이 블록은 가로 막대와 그 막대에 붙은 기둥으로 이루어진다. 입력의 양의 정수 u, v, w, x, y는 ㅗ자 블록의 회전하지 않은 모양을 다음과 같이 나타낸다.
u, 두께는 v이다.y칸, 막대에 수직인 방향으로 x칸이다.w칸 떨어져 있다.ㅗ자 블록을 회전하여 ㄷ자 블록의 오목한 부분에 끼울 수 있다. 끼웠을 때 대상 ㄷ자 블록과 ㅗ자 블록이 합쳐져 하나의 직사각형을 이루어야 한다. 주어진 판에서 이렇게 맞출 수 있는 ㄷ자 블록들을 모두 구하시오.
주의할 점은 다음과 같다.
첫째 줄에 판의 한 변의 길이 n이 주어진다. n은 50 이하이다.
둘째 줄에 ㅗ자 블록을 나타내는 양의 정수 u, v, w, x, y가 차례로 주어진다.
다음 n개의 줄에는 판의 상태가 주어진다. ㄷ자 블록이 놓인 칸은 1, 비어 있는 칸은 0으로 표시된다. 판에 놓인 모든 블록은 ㄷ자 블록이며, 서로 다른 ㄷ자 블록들은 변을 공유하며 맞닿아 있지 않다.
첫째 줄에 ㅗ자 블록을 끼워 직사각형을 만들 수 있는 ㄷ자 블록의 개수를 출력한다.
둘째 줄부터는 그런 ㄷ자 블록 각각의 왼쪽 위 구석 위치를 한 줄에 하나씩 출력한다. 위치는 판의 위쪽에서부터 센 행 번호와 왼쪽에서부터 센 열 번호로 나타내며, 두 수 사이에는 공백을 하나 둔다. 행과 열은 1부터 센다.
출력해야 할 위치가 여러 개라면 어떤 순서로 출력해도 된다. 맞출 수 있는 ㄷ자 블록이 없다면 0만 출력한다.