시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
3 초 (추가 시간 없음) 1024 MB 3 1 1 100.000%

문제

모든 자연수를 아래처럼 빈칸 없이 왼쪽부터 오른쪽으로 차례대로 1부터 나열한 문자열 S를 생각하자.

12345678910111213141516171819202122232425···

S와 관련된 문제는 이 세상에 이미 많이 있다. 최근의 어떤 필기시험에서는 S의 2 · 106번째 자리를 손으로 구하는 문제가 출제된 바 있다.

문자열 S는 가로로 무한히 길쭉하지만, 이 문제가 인쇄된 종이나 이 문제가 띄워져 있는 모니터는 가로 폭이 고정되어 있다. 만약 S를 모든 숫자의 글자 폭이 동일한 글꼴로 인쇄하거나 적절한 편집기로 읽는다면, 아래와 같이 모든 줄에 M개의 숫자가 순서대로 나타나 있는 형태가 될 것이다.

numbergrid

이러한 방식으로 S의 첫 109 · M글자를 109 × M 크기의 행렬 A에 순서대로 썼다고 하자. 위의 그림에는 M = 31일 때 A의 1행부터 7행까지가 나타나 있다.

2차원 행렬이 있으니, 왠지 2차원 부분합을 구하고 싶지 않은가? 행렬 A의 직사각형 영역 [r1, r2] × [c1, c2]이 주어질 때, 이 영역에 포함된 숫자들의 합, 즉

$$\sum_{i=r_1}^{r_2} \sum_{j=c_1}^{c_2} A_{i,j}$$

의 값을 구하는 프로그램을 작성하라. 한 번만 구하기는 아쉬우므로, Q번 구하도록 하자.

입력

첫 번째 줄에 정수 M(1 ≤ M ≤ 100,000)과 질의의 수 Q (1 ≤ Q ≤ 1,000)가 주어진다.

다음 Q개의 줄에는 네 개의 정수 r1, c1, r2, c2(1 ≤ r1r2 ≤ 109, 1 ≤ c1c2M)이 주어진다.

출력

각각의 질의마다 $\sum_{i=r_1}^{r_2} \sum_{j=c_1}^{c_2} A_{i,j}$의 값을 한 줄에 하나씩 순서대로 출력한다.

예제 입력 1

31 3
1 1 7 31
4 4 5 5
5 25 6 30

예제 출력 1

946
23
79