캥거루
시간 제한2초메모리 제한512 MB
한 줄로 놓인 N개의 칸을 캥거루가 cs에서 출발해 cf에서 멈추며 모두 정확히 한 번씩 방문할 때, 매 점프마다 방향을 바꾸는 경로의 수를 세는 문제이다.
문제
정원은 1번부터 번까지 번호가 붙은 칸이 한 줄로 늘어선 모양이다. 처음에는 모든 칸에 식물이 있다.
캥거루는 번 칸에 내려앉아 그 칸의 식물을 먹는다. 그다음부터는 칸에서 칸으로 뛰어다니며 내려앉은 칸의 식물을 먹고, 개의 칸을 모두 정확히 한 번씩 방문한 뒤 번 칸에서 멈춘다. 출발한 칸과 마지막 칸도 방문한 칸에 들어가므로 캥거루는 정확히 번 뛴다.
캥거루는 잡히지 않으려고 한 번 뛸 때마다 다음에 뛸 방향을 바꾼다. 번 칸에서 번 칸으로 뛴 다음 번 칸에서 번 칸으로 뛴다면 아래 두 조건이 성립한다.
- 이면 이다.
- 이면 이다.
칸의 수 과 출발 칸 , 마지막 칸 가 주어질 때 캥거루가 지나갈 수 있는 서로 다른 경로의 수를 구하라.
입력
첫째 줄에 양의 정수 , , 가 공백으로 구분되어 주어진다.
- 경로는 칸을 방문하는 순서로 구분한다.
- 규칙을 만족하는 경로가 적어도 하나 있는 입력만 주어진다.
- 캥거루는 번 칸에서 어느 방향으로든 처음 뛸 수 있다.
출력
규칙을 만족하는 서로 다른 경로의 수를 ()로 나눈 나머지를 한 줄에 출력한다.
힌트
첫 번째 예제에서 캥거루는 2번 칸에서 출발해 3번 칸에서 멈춘다. 규칙을 만족하는 경로는 2 → 1 → 4 → 3과 2 → 4 → 1 → 3, 두 가지다.