나선 격자의 직사각형 합

아직 제출이 없습니다시간 제한1.5초메모리 제한256 MB

문제

크기가 (2n+1)×(2n+1)(2n+1) \times (2n+1) 인 격자를 다음과 같이 채운다. 가운데 칸에 11을 적고, 그 오른쪽 칸에 22를 적은 다음, 반시계 방향으로 나선을 그리며 이어지는 수를 차례로 적는다.

칸의 위치는 정수 좌표 (x,y)(x, y)로 나타낸다. 가운데 칸이 (0,0)(0, 0)이고, xx는 오른쪽으로 갈수록 커지며 yy는 위로 갈수록 커진다. 그래서 격자의 모든 칸은 nxn-n \le x \le nnyn-n \le y \le n을 만족한다. n=2n = 2인 격자는 이렇게 채워진다.

x=2x=-2x=1x=-1x=0x=0x=1x=1x=2x=2
y=2y=21716151413
y=1y=11854312
y=0y=01961211
y=1y=-12078910
y=2y=-22122232425

직사각형 영역 qq개가 주어진다. 각 영역에 들어 있는 수의 합을 109+710^9+7로 나눈 나머지를 구하라.

입력

첫째 줄에 격자의 크기 nn과 질의의 개수 qq가 주어진다.

이어지는 qq개 줄에 각각 네 정수 x1x_1, y1y_1, x2x_2, y2y_2가 주어진다. 이는 두 꼭짓점 (x1,y1)(x_1, y_1)(x2,y2)(x_2, y_2)가 정하는 직사각형 영역, 즉 x1xx2x_1 \le x \le x_2y1yy2y_1 \le y \le y_2를 만족하는 칸 전체를 뜻한다.

출력

질의마다 한 줄에 그 영역에 들어 있는 수의 합을 109+710^9+7로 나눈 나머지를 출력한다.

제한

  • 1n1091 \le n \le 10^9
  • 1q1001 \le q \le 100
  • nx1x2n-n \le x_1 \le x_2 \le n
  • ny1y2n-n \le y_1 \le y_2 \le n