만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

라틴 방진

면접 대비

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

요약
크기 N인 라틴 방진에 행과 열 교환 T번을 순서대로 적용합니다. 최종 행렬이 될 수 있는 원래 방진을 하나 출력하고, 없으면 *를 출력합니다.
난이도

쉬움10점 중 3점

유형
배열, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

크기가 NN인 라틴 방진은 N×NN \times N 행렬이며, 각 칸에는 11 이상 NN 이하의 정수가 들어간다. 같은 행이나 같은 열에 있는 두 칸의 값은 서로 달라야 한다.

Alice는 크기 NN인 라틴 방진을 가지고 있고, 이 행렬에 변환을 여러 번 순서대로 적용했다. 각 변환은 행렬에서 서로 다른 두 행 또는 서로 다른 두 열을 맞바꾼다. 첫 번째 변환은 원래 행렬에 적용되고, 두 번째 변환은 첫 번째 변환의 결과에 적용된다. 이렇게 모든 변환을 적용한 최종 결과는 N×NN \times N 행렬이다.

Alice는 행렬을 보여주지 않고 변환 목록만 알려준다. 모든 변환을 적용했을 때 최종 행렬과 같아지는 원래 행렬이 존재하는지 판단하라. 존재한다면 원래 행렬의 가능한 내용 하나를 출력한다.

입력

첫 줄에 라틴 방진의 크기 NN (2≤N≤5002 \le N \le 500)과 변환의 개수 TT (1≤T≤1051 \le T \le 10^5)가 정수로 주어진다.

다음 TT개의 줄에는 적용되는 순서대로 변환이 하나씩 주어진다. 각 줄은 문자 XX와 두 정수 II, JJ (1≤I,J≤N1 \le I, J \le N, I≠JI \ne J)로 이루어진다. XX가 R이면 II번 행과 JJ번 행을 맞바꾸고, C이면 II번 열과 JJ번 열을 맞바꾼다.

출력

원래 행렬이 존재하여 모든 변환을 적용하면 최종 행렬과 같아진다면, 그러한 행렬을 NN개의 줄에 나누어 출력한다. 각 줄에는 정수 NN개를 출력한다. 가능한 행렬 중 아무것이나 한 가지를 출력하면 된다.

그러한 행렬이 존재하지 않으면 별표 * 한 글자만 담긴 한 줄을 출력한다.

예제2

  1. 예제 1

    입력
    4 4
    R 1 2
    C 2 1
    R 3 4
    C 3 4
    
    예상 출력
    1 2 3 4
    2 1 4 3
    3 4 1 2
    4 3 2 1
    
  2. 예제 2

    입력
    4 3
    R 1 2
    R 1 2
    R 2 1
    
    예상 출력
    *