N by N 표에서 주어진 직사각형 영역의 합을 2차원 누적합으로 질의마다 구합니다.
N×NN \times NN×N개의 수가 N×NN \times NN×N 크기의 표에 채워져 있다. (x1,y1)(x_1, y_1)(x1,y1)부터 (x2,y2)(x_2, y_2)(x2,y2)까지의 합을 구하는 프로그램을 작성하시오. (x,y)(x, y)(x,y)는 xxx행 yyy열을 뜻한다.
예를 들어 N=4N = 4N=4이고 표가 아래와 같이 채워져 있는 경우를 살펴보자.
여기서 (2,2)(2, 2)(2,2)부터 (3,4)(3, 4)(3,4)까지의 합은 3+4+5+4+5+6=273+4+5+4+5+6 = 273+4+5+4+5+6=27이고, (4,4)(4, 4)(4,4)부터 (4,4)(4, 4)(4,4)까지의 합은 777이다.
표에 채워진 수와 합을 구하는 연산이 주어졌을 때, 이를 처리하는 프로그램을 작성하시오.
첫째 줄에 표의 크기 NNN과 합을 구해야 하는 횟수 MMM이 주어진다. (1≤N≤10241 \le N \le 10241≤N≤1024, 1≤M≤1000001 \le M \le 1000001≤M≤100000)
둘째 줄부터 NNN개의 줄에 표에 채워진 수가 1행부터 차례대로 주어진다. 각 줄에는 그 행의 수 NNN개가 1열부터 차례대로 주어진다. 표에 채워진 수는 1,000보다 작거나 같은 자연수이다.
다음 MMM개의 줄에는 네 정수 x1x_1x1, y1y_1y1, x2x_2x2, y2y_2y2가 주어진다. (1≤x1≤x2≤N1 \le x_1 \le x_2 \le N1≤x1≤x2≤N, 1≤y1≤y2≤N1 \le y_1 \le y_2 \le N1≤y1≤y2≤N)
총 MMM개의 줄에 걸쳐 (x1,y1)(x_1, y_1)(x1,y1)부터 (x2,y2)(x_2, y_2)(x2,y2)까지의 합을 입력 순서대로 한 줄에 하나씩 출력한다.