퍼즐 조립
시간 제한0.5초메모리 제한64 MB
모서리가 잘린 n x n 조각 네 개를 회전하고 뒤집어 (2n-1) x (2n-1) 정사각형을 빈틈이나 겹침 없이 채우고, 사전순으로 가장 작은 결과를 출력한다.
문제
어린 P는 과자 봉지에서 나오는 퍼즐 조각을 모읍니다. 정사각형으로 맞출 수 있는 네 조각을 모으면, 종이에 붙여서 우편으로 보냅니다.
조각은 판지로 만들어졌고 양면이 똑같아 보이기 때문에, 각 조각은 8가지 방법으로 사용할 수 있습니다(현재 방향 그대로, 90°·180°·270°로 회전한 것, 그리고 각각을 뒤집은 것까지).
모든 조각은 처음에 정사각형입니다. 각 조각에서 서로 인접한 두 변을 골라 칸 몇 개를 잘라냅니다. 고른 각 변에서 최소한 한 칸은 잘라내고, 최소한 한 칸은 남깁니다. 네 조각을 합치면 정사각형이 됩니다.
각 조각에는 1부터 4까지의 번호가 붙어 있습니다. 조각의 모든 칸에는 그 조각의 번호가 적혀 있고, 잘려 나간 칸에는 0이 적혀 있습니다.

위의 네 조각을 합쳐 아래와 같은 정사각형을 만들었습니다.

네 개의 조각이 순서대로 주어집니다. 각 조각은 회전하거나 뒤집을 수 있습니다. 네 조각을 서로 겹치거나 빈틈이 생기지 않도록 완벽하게 맞추어 정사각형을 만드세요.
입력
첫째 줄에 퍼즐 조각의 한 변의 길이인 정수 이 주어집니다.
이어지는 줄들에 네 조각이 순서대로 주어집니다. 각 조각은 개의 줄로 표현되고, 각 줄에는 개의 숫자가 공백 하나로 구분되어 있습니다. 연속한 조각 사이는 빈 줄로 구분됩니다.
출력
개의 줄을 출력합니다. 각 줄에는 개의 숫자를 공백 하나로 구분하여 완성된 정사각형을 나타냅니다(각 칸에는 그 칸을 덮은 조각의 번호가 적힙니다).
가능한 배치가 여러 가지일 수 있습니다. 그중 사전순으로 가장 작은 것을 출력하세요. 모든 숫자를 위에서 아래로, 한 줄 안에서는 왼쪽에서 오른쪽으로 읽어 하나의 수열을 만들고, 유효한 모든 배치 중에서 두 수열이 처음으로 달라지는 위치에서 더 작은 수열을 출력합니다.
제한
- 모든 테스트 케이스에는 유효한 배치가 적어도 하나 존재합니다.