만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

레이저 연구소

시간 제한2초메모리 제한1024 MB

요약
N×M 격자에서 축에 평행하지 않은 모든 격자점 사이 레이저 발사의 수리 비용 합을 구합니다. 건물은 A원, 벽은 B원으로 계산합니다.
난이도

보통10점 중 7점

유형
정수론, 수학, 조합론
정답자
아직 제출이 없습니다

문제

아무도 모르는 외딴 섬에서 ahgus89와 Sait2000은 레이저 연구를 하고 있다. 이 섬에는 여러 연구 구역이 있고, 그중 레이저 연구 구역은 N×MN \times M 모양의 직사각형이다. 이 영역은 1×11 \times 1 크기의 정사각형 NMNM개로 나뉘어 있다. 각 정사각형의 꼭짓점에는 건물이 하나씩 있고, 각 정사각형의 변에는 건물을 잇는 벽이 하나씩 있다. 따라서 건물은 총 (N+1)(M+1)(N+1)(M+1)개, 벽은 총 2NM+N+M2NM+N+M개이다.

ahgus89와 Sait2000은 레이저의 성능을 시험하려고 건물에서 건물로 레이저를 쏜다. 가능한 모든 시작점과 끝점에 대해 레이저를 쏜다. 레이저는 직선으로만 나가므로 건물과 벽이 레이저를 막을 수 있다.

ahgus89는 출력을 강하게 하려고 건물과 벽에 구멍을 내서라도 실험하려고 한다. 시작점과 끝점에 있는 건물을 포함해 경로 위의 모든 건물과 벽에 구멍이 뚫린다. 레이저가 건물을 정확히 통과하면 그 건물에 붙은 벽에는 구멍이 뚫리지 않는다. 다만 레이저를 xx축이나 yy축에 평행하게 쏘면 벽이 통째로 무너지므로, 이런 경우는 제외하고 쏜다.

위 그림은 N=7N=7, M=7M=7인 경우 (0,0)(0, 0)에서 (6,4)(6, 4)로 레이저를 쏜 모습이다. 건물 3개와 벽 6개에 구멍이 뚫린다.

레이저를 한 번 쏘고 나면 구멍이 뚫린 건물과 벽을 모두 수리한다. 건물 하나를 수리하는 데 AA원, 벽 하나를 수리하는 데 BB원이 든다. 수리를 마쳐야 다음 레이저를 쏠 수 있다.

입력

첫 번째 줄에 NN, MM, AA, BB가 공백으로 구분되어 주어진다. (1≤N,M,A,B≤1091 \leq N, M, A, B \leq 10^{9})

출력

실험을 마친 뒤의 총 수리비를 출력한다. 값이 매우 커질 수 있으므로 109+710^{9}+7로 나눈 나머지를 출력한다.

힌트

첫 번째 테스트의 상황은 다음과 같다.

  • (0,0)(0, 0)에서 (1,1)(1, 1)로 쏘고 나면 건물 2개를 수리한다.
  • (1,0)(1, 0)에서 (0,1)(0, 1)로 쏘고 나면 건물 2개를 수리한다.
  • (0,1)(0, 1)에서 (1,0)(1, 0)로 쏘고 나면 건물 2개를 수리한다.
  • (1,1)(1, 1)에서 (0,0)(0, 0)로 쏘고 나면 건물 2개를 수리한다.

따라서 건물 8개를 수리하므로 총 수리비는 4040원이다.

두 번째 테스트에서 (0,0)(0, 0)에서 (2,2)(2, 2)로 쏘고 나면 건물 3개만 수리한다는 점에 유의하라.

예제3

  1. 예제 1

    입력
    1 1 5 6
    
    예상 출력
    40
    
  2. 예제 2

    입력
    2 2 3 1
    
    예상 출력
    244
    
  3. 예제 3

    입력
    14 15 134 187
    
    예상 출력
    89892000