마법 체스판
시간 제한5초메모리 제한512 MB
N×M 격자에서 수호자 위치를 기준으로 한 직사각형 영역의 최대공약수를 구하고, 직사각형 영역에 같은 값을 더하는 갱신을 처리합니다.
문제
어린 Q는 이제 막 2학년이 되었고, 인기 있는 교육용 게임인 마법 체스판을 샀다. 이 게임은 행 열 격자에서 진행되며, 각 칸에는 양의 정수가 하나씩 적혀 있다. 체스판 수호자는 행 열에 있으며 절대 움직이지 않는다. 수호자는 두 가지 종류의 연산을 수행한다.
- 질의: 수호자의 현재 위치를 기준으로 네 방향으로 넓혀 크기가 가변인 직사각형을 만든다. 그 영역에 있는 모든 정수의 최대공약수를 구한다.
- 갱신: 체스판에서 직사각형 영역을 임의로 고르고, 그 영역의 모든 칸에 일정한 값을 한꺼번에 더한다.
입력
첫 줄에 판의 크기를 나타내는 양의 정수 과 이 주어진다. 둘째 줄에 수호자의 위치를 나타내는 양의 정수 와 가 주어진다. 셋째 줄에 연산의 개수 가 주어진다. 이어지는 개의 줄에는 각각 개의 정수가 있으며, 각 칸의 값을 나타낸다. 이어지는 개의 줄에는 연산이 하나씩 주어진다. 줄이 0으로 시작하면 질의이며, 뒤에 음이 아닌 정수 , , , 가 온다. 이는 수호자 위치에서 위로 행, 아래로 행, 왼쪽으로 열, 오른쪽으로 열까지 질의 범위를 넓힌다는 뜻이다. 줄이 1로 시작하면 갱신이며, 뒤에 양의 정수 , , , 와 정수 가 온다. 갱신 영역의 위아래 경계는 각각 과 이고, 왼쪽과 오른쪽 경계는 각각 과 이다. 영역 안의 모든 수는 동시에 만큼 증가한다. 는 음수일 수 있다.
출력
각 질의마다 질의 영역의 최대공약수를 한 줄에 하나씩 출력한다.
제한
, 이다. 판의 모든 수는 이하의 양의 정수이다.