토러스 바다
시간 제한2초메모리 제한512 MB
N×M 토러스 위에서 매일 대각선 방향으로 무작위 이동할 때 (x, y)에 처음 도달하는 기대 일수를 구하고, 도달할 수 없으면 -1을 출력한다.
문제
상근이는 도넛해를 항해한다. 도넛해는 토러스 모양이고, 개의 칸으로 나누어져 있다.

(Image by YassineMrabet from Wikimedia Commons, licensed under CC BY-SA 3.0.)
도넛해의 칸은 모두 좌표 으로 나타낸다. (, ) 좌표는 항상 과 으로 나눈 나머지로 관리하므로 바다는 두 방향 모두 이어져 있다. 첫 번째 좌표가 에서 하나 늘면 이 되고, 에서 하나 줄면 이 된다. 두 번째 좌표도 을 기준으로 똑같이 돈다.
상근이는 에서 출발해 에 도착하려고 한다. 이동은 하루에 한 번 하며, 지금 위치가 이면 또는 으로 간다. 두 칸으로 갈 확률은 각각 로 같다. 여기서 는 이상 미만인 나머지를 뜻한다.
상근이가 에 처음 도착할 때까지 걸리는 날수의 기댓값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 , , , 가 공백으로 구분되어 주어진다. (, , )
는 이 아니다.
출력
첫째 줄에 상근이가 에 처음 도착할 때까지 걸리는 날수의 기댓값을 출력한다. 이 기댓값은 항상 정수이므로 소수점이나 남는 자리 없이 정수 하나만 출력한다.
에 갈 수 없으면 -1을 출력한다.