시간 제한메모리 제한제출정답맞힌 사람정답 비율
3 초 512 MB101644430843.937%

문제

찬우는 오늘 프로그래밍 기초 강의에서 2차원 배열에 대해 배웠다. 너무 재미있던 찬우는 2차원 배열에다 연산을 진행하기로 결심했다.

아래와 같은 두 가지 종류의 연산이 쿼리로 주어진다.

  • 0 i j k : $i$번 행의 $j$번 열의 값을 $k$로 바꾼다.
  • 1 i j : $i$번 행과 $j$번 행을 swap한다.

swap 이란 $i$번 행의 모든 원소와 $j$번 행의 모든 원소를 바꾸는 연산이다.

$q$개의 쿼리를 수행한 후 바뀐 배열의 최종 결과를 출력하시오.

입력

첫째 줄에 행의 개수 $N$과 열의 개수 $M$, 쿼리의 개수 $q$가 주어진다. $(1 \le N , M \le 3000, 1 \le q \le 10^6)$

2번째 줄부터 $N$개의 줄에 걸쳐 $N$행 $M$열의 2차원 배열이 입력으로 주어진다. 배열의 각 원소의 값은 $1$ 이상 $10\,000$ 이하의 정수이다.

이후 $q$개 줄에 걸쳐 쿼리가 입력으로 주어진다.

쿼리는 0 i j k 혹은 1 i j의 형태로 주어지며, 쿼리의 첫 번째 값이 0이면 첫 번째 쿼리를, 1이면 두 번째 쿼리를 수행한다.

첫 번째 쿼리의 경우 $i$, $j$, $k$의 범위는 $(0 \le i \le N-1, 0 \le j \le M-1, 1 \le k \le 10\,000)$이며 $k$는 정수이다.

두 번째 쿼리의 경우 $i$, $j$의 범위는 $(0 \le i, j \le N-1)$이다.

출력

$q$개의 쿼리를 전부 수행한 후의 2차원 배열을 출력한다.

예제 입력 1

4 3 4
10 3 8
2 10 4
1 8 4
1 4 2
1 2 2
0 1 0 9
1 2 1
1 3 0

예제 출력 1

1 4 2
1 8 4
9 10 4
10 3 8

출처

University > 경북대학교 > 2022 Goricon B번