2009년에 출시된 게임 Minecraft를 떠올리며 다음 문제를 생각해 보자.
$n \times n \times n$ 크기의 3차원 격자 $M$이 있다. $i$번째 층, $j$번째 행, $k$번째 열의 칸을 $M_{i,j,k}$라고 하자. 각 칸에는 블록이 최대 하나 있으며, 블록이 있으면 $M_{i,j,k}=1$, 없으면 $M_{i,j,k}=0$이다.
격자를 세 축 방향으로 사영해 얻은 $n \times n$ 크기의 2차원 격자를 각각 $H$, $R$, $C$라고 한다. 각 격자는 다음과 같이 정의된다.
세 격자 $H'$, $R'$, $C'$가 주어진다. 사영 결과가 각각 $H=H'$, $R=R'$, $C=C'$가 되는 3차원 격자 $M'$가 존재하는지 판별하라.
첫째 줄에 격자의 한 변의 크기 $n$이 주어진다. ($1 \le n \le 100$)
다음 $n$개의 줄에는 격자 $H'$가 주어진다. 각 줄은 0과 1로 이루어진 길이 $n$의 문자열이며, 이 중 $j$번째 줄의 $k$번째 문자가 $H'_{j,k}$이다.
그다음 $n$개의 줄에는 격자 $R'$가 주어진다. 각 줄은 0과 1로 이루어진 길이 $n$의 문자열이며, 이 중 $i$번째 줄의 $k$번째 문자가 $R'_{i,k}$이다.
마지막 $n$개의 줄에는 격자 $C'$가 주어진다. 각 줄은 0과 1로 이루어진 길이 $n$의 문자열이며, 이 중 $i$번째 줄의 $j$번째 문자가 $C'_{i,j}$이다.
조건을 만족하는 격자 $M'$가 존재한다면 첫째 줄에 YES를 출력한다.
그다음 줄부터 $n \times n$ 격자를 모두 $n$개 출력한다. 각 격자는 $n$개의 줄로 출력하며, 각 줄은 0과 1로 이루어진 길이 $n$의 문자열이어야 한다. $i$번째로 출력하는 격자의 $j$번째 줄 $k$번째 문자는 $M'_{i,j,k}$에 해당한다.
가능한 격자가 여러 개라면 그중 아무거나 하나만 출력한다.
조건을 만족하는 격자 $M'$가 존재하지 않는다면 첫째 줄에 NO를 출력한다.