그리드 복원

시간 제한3초메모리 제한2048 MB

문제

다니엘은 각 셀이 검정색 또는 흰색으로 칠해진 $N \times N$ 그리드를 가지고 있다. 이 그리드의 상태는 각 원소가 $0$ 또는 $1$인 $N \times N$ 행렬 $A$로 표시된다. $0 \le i, j \le N-1$에 대해, $A[i][j] = 1$은 $i$번 행 $j$번 열의 셀(앞으로 이를 편의상 셀 $(i,j)$로 표기한다)이 검정색인 경우를, $A[i][j] = 0$은 흰색인 경우를 의미한다. 한편, 그리드에는 다음 조건들을 만족하는 $(i_1, i_2, j_1, j_2)$가 존재하지 않는 것이 알려져 있다:

  1. $0 \le i_1 < i_2 \le N-1$, $0 \le j_1 < j_2 \le N-1$
  2. $A[i_1][j_1] = A[i_2][j_2], A[i_1][j_2] = A[i_2][j_1], A[i_1][j_1] \neq A[i_1][j_2]$

다니엘은 그리드를 영욱이에게 전달하고자 한다. 통신은 보안상의 이유로 다음과 같은 절차를 따른다:

  1. 다니엘은 총 $N^2$개의 셀 중에서 몇 개의 셀을 선택한다.
  2. 통신 시스템은 $(0,1,2,\dots,N-1)$의 비밀 순열인 $X, Y$을 가지고 있다.
  3. $N \times N$ 행렬 $B$가 영욱이에게 전달된다. 다니엘이 선택한 각 셀 $(i,j)$에 대해 $B[X[i]][Y[j]] = A[i][j]$가 성립하고, 선택하지 않은 셀 $(i,j)$에 대해 $B[X[i]][Y[j]] = -1$이 성립한다.

영욱이는 행렬 $B$에서 $-1$로 채워진 부분을 복구하여 모든 $0\le i, j \le N-1$에 대해 $B[X[i]][Y[j]] = A[i][j]$가 성립하도록 만들어야 한다.

제한

  • $1 \le N \le 500$
  • send 내에서 select의 호출 횟수 $K$는 $N^2$를 넘을 수 없다.
  • 모든 테스트 케이스에서 $N^2$을 합한 값은 $10^6$을 넘지 않는다.