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

(Image by YassineMrabet from Wikimedia Commons, licensed under CC BY-SA 3.0.)
도넛해의 칸은 모두 좌표 (n,m)으로 나타낸다. (0≤n<N, 0≤m<M) 좌표는 항상 N과 M으로 나눈 나머지로 관리하므로 바다는 두 방향 모두 이어져 있다. 첫 번째 좌표가 N−1에서 하나 늘면 0이 되고, 0에서 하나 줄면 N−1이 된다. 두 번째 좌표도 M을 기준으로 똑같이 돈다.
상근이는 (0,0)에서 출발해 (x,y)에 도착하려고 한다. 이동은 하루에 한 번 하며, 지금 위치가 (n,m)이면 ((n+1)modN,(m+1)modM) 또는 ((n−1)modN,(m−1)modM)으로 간다. 두 칸으로 갈 확률은 각각 1/2로 같다. 여기서 amodb는 0 이상 b 미만인 나머지를 뜻한다.
상근이가 (x,y)에 처음 도착할 때까지 걸리는 날수의 기댓값을 구하는 프로그램을 작성하시오.