로봇

로봇이 확률적으로 왼쪽, 직진, 오른쪽을 선택하며 N번 이동한 뒤 원점에서 떨어진 거리의 제곱의 기댓값을 구해 1e9+7로 나눈 분수 값을 출력한다.

보통6확률수학동적 계획법아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

xy평면의 원점에 로봇이 서 있다. 로봇은 x축 양의 방향을 바라보고 있고, 지금부터 NN번 움직인다. 한 번 움직이는 과정은 다음과 같다.

  1. 로봇은 LL+M+R\frac{L}{L+M+R}의 확률로 바라보는 방향에서 왼쪽으로 90도 돌고, ML+M+R\frac{M}{L+M+R}의 확률로 방향을 그대로 두며, RL+M+R\frac{R}{L+M+R}의 확률로 오른쪽으로 90도 돈다. 처음 상태에서 왼쪽으로 90도 돌면 y축 양의 방향을 바라보고, 오른쪽으로 90도 돌면 y축 음의 방향을 바라본다.
  2. 방향이 정해지면 로봇은 그 방향으로 거리 1만큼 이동한다.

로봇이 NN번 움직인 결과 좌표 (x,y)(x, y)에 있으면, 원점에서 떨어져 있는 정도는 x2+y2x^2 + y^2이다. 로봇이 NN번 움직인 다음 원점에서 떨어져 있는 정도의 기댓값을 구하는 프로그램을 작성하라.

입력

첫째 줄에 네 정수 NN, LL, MM, RR이 공백으로 구분되어 주어진다. NN은 로봇이 움직이는 횟수이고, LL, MM, RR은 각각 왼쪽으로 돌 확률, 방향을 그대로 둘 확률, 오른쪽으로 돌 확률을 결정한다. LL, MM, RR 중 적어도 하나는 양의 정수이다. (1N1091 \le N \le 10^9, 0L,M,R1060 \le L, M, R \le 10^6)

출력

로봇이 NN번 이동한 다음 원점에서 떨어져 있는 정도의 기댓값을 출력한다. 정확하게 채점하기 위해, 답을 기약분수로 나타내어 a/ba/b가 되면 a×b1a \times b^{-1}을 1,000,000,007로 나눈 나머지를 대신 출력한다. b1b^{-1}은 1,000,000,007을 법으로 하는 bb의 곱셈 역원이다. 이 문제에서 주어지는 모든 입력에 대해 답이 존재한다.