토러스 바다

N×M 토러스 위에서 매일 대각선 방향으로 무작위 이동할 때 (x, y)에 처음 도달하는 기대 일수를 구하고, 도달할 수 없으면 -1을 출력한다.

보통6확률그래프수학아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

상근이는 도넛해를 항해한다. 도넛해는 토러스 모양이고, N×MN \times M개의 칸으로 나누어져 있다.

(Image by YassineMrabet from Wikimedia Commons, licensed under CC BY-SA 3.0.)

도넛해의 칸은 모두 좌표 (n,m)(n, m)으로 나타낸다. (0n<N0 \le n < N, 0m<M0 \le m < M) 좌표는 항상 NNMM으로 나눈 나머지로 관리하므로 바다는 두 방향 모두 이어져 있다. 첫 번째 좌표가 N1N-1에서 하나 늘면 00이 되고, 00에서 하나 줄면 N1N-1이 된다. 두 번째 좌표도 MM을 기준으로 똑같이 돈다.

상근이는 (0,0)(0, 0)에서 출발해 (x,y)(x, y)에 도착하려고 한다. 이동은 하루에 한 번 하며, 지금 위치가 (n,m)(n, m)이면 ((n+1)modN,(m+1)modM)((n+1) \bmod N, (m+1) \bmod M) 또는 ((n1)modN,(m1)modM)((n-1) \bmod N, (m-1) \bmod M)으로 간다. 두 칸으로 갈 확률은 각각 1/21/2로 같다. 여기서 amodba \bmod b00 이상 bb 미만인 나머지를 뜻한다.

상근이가 (x,y)(x, y)에 처음 도착할 때까지 걸리는 날수의 기댓값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 NN, MM, xx, yy가 공백으로 구분되어 주어진다. (2N,M102 \le N, M \le 10, 0xN10 \le x \le N-1, 0yM10 \le y \le M-1)

(x,y)(x, y)(0,0)(0, 0)이 아니다.

출력

첫째 줄에 상근이가 (x,y)(x, y)에 처음 도착할 때까지 걸리는 날수의 기댓값을 출력한다. 이 기댓값은 항상 정수이므로 소수점이나 남는 자리 없이 정수 하나만 출력한다.

(x,y)(x, y)에 갈 수 없으면 -1을 출력한다.