육각형 타일로 이루어진 칸들이 무한하게 놓여 있고, 재현이는 이 중 "시작 칸"이라고 부르는 칸 위에 서 있다. 두 칸은 모서리를 공유하면 이웃하고 있다고 하자. 재현이는 매번 다음 그림과 같이, 1부터 6까지 번호가 붙은 방향 을 따라서 이웃한 칸 중 하나로 이동할 수 있다.

재현이가 총 N번 움직였을 때 만드는 칸들로 이루어지는 경로는 영역을 형성한다. i번째 움직일 때는 D\[i] 방향으로 L\[i] 칸을 이동한다. 이 경로는 다음과 같은 특징이 있다.
다음은 재현이가 갈 수 있는 경로 중 하나의 예이다.

형성된 영역은 경로에 포함되거나, 내부에 있는 모든 칸들로 이루어진다. 영역 안의 칸 c의 거리는 영역 안의 칸들 만 방문해서 시작 칸부터 칸 c에 도착할 때까지 필요한 움직임의 최소값이다. 영역 안의 칸에 대한 점수는 A+d×B인데, A와 B 는 재현이가 미리 정한 상수값이며, d는 이 칸의 거리이다. 다음은 위 예제의 경로에 의 해 형성된 영역 안의 각 칸들의 거리를 보여준다.

재현이가 N번 움직일 때 만드는 칸들로 이루어진 경로에 의해 형성된 영역의 모든 칸의 점수의 총합을 구하는 프로그램을 작성하시오. 점수의 총합은 매우 큰 값일 수 있으므로, 이 값을 109+7으로 나눈 나머지를 구하시오.