시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
2 초 512 MB 18 12 12 66.667%

문제

준규는 계단 오르기 운동을 즐겨한다.

준규는 계단을 총 N번 이동하며, 그 이동은 길이가 N+1인 수열 H로 나타낼 수 있다.

H0은 처음 준규의 위치이며, 항상 0이다. HN은 준규의 마지막 위치이며 항상 0이다. 그 사이 값 Hi는 준규가 i번째 이동에서 몇 번째 계단에 있었는지를 나타내며, |Hi+1 - Hi| = 1을 만족해야 한다. 또, 모든 Hi는 0보다 크거나 같아야 한다. 즉, 준규는 계단을 한 칸 올라가거나 내려갈 수 있다.

준규는 자신이 한 운동의 방법을 매일 적어놓는다. 하루의 운동은 길이가 N인 문자열로 나타낼 수 있으며, 계단을 한 칸 올라간 것은 U, 내려간 것은 D로 나타낸다. 이 문자열을 운동 문자열이라고 한다. 하지만, 운동 문자열을 적어놓은 종이를 강호가 찢어버렸기 때문에, 준규는 지금 운동 문자열의 연속된 일부분을 가지고 있다.

준규의 운동 문자열의 연속된 일부분이 주어졌을 때, 길이가 N인 운동 문자열을 만들 수 있는 방법의 수를 구하는 프로그램을 작성하시오. 강호가 운동 문자열을 수정했을 수도 있기 때문에, 방법의 수는 0이 될 수도 있다.

입력

첫째 줄에 N (1 ≤ N ≤ 100)이 주어지고, 둘째 줄에 운동 문자열의 연속된 일부분이 주어진다.

출력

첫째 줄에 운동 문자열을 만들 수 있는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다.

예제 입력 1

4
UUDD

예제 출력 1

1

예제 입력 2

4
DUUD

예제 출력 2

0

예제 입력 3

4
UU

예제 출력 3

1

예제 입력 4

11
U

예제 출력 4

0

예제 입력 5

20
UUUDUUU

예제 출력 5

990

출처