계단 오르기 3
계단은 0번째 칸부터 \(N\)번째 칸까지 번호가 붙어 있다. 0번째 칸에서 출발해 \(N\)번째 칸에 도착하려고 한다.
한 번에 1칸, 2칸 또는 3칸을 올라갈 수 있다. 이동 순서가 다르면 서로 다른 방법으로 센다. 예를 들어 1 2와 2 1은 서로 다른 방법이다.
일부 계단은 밟을 수 없다. 밟을 수 없는 계단에 도착하는 이동은 허용되지 않지만, 2칸 또는 3칸 이동으로 그 계단을 뛰어넘을 수는 있다.
총 \(K\)번 이하로 이동하여 \(N\)번째 칸에 도착하는 방법의 수를 구하여라. 출발점과 도착점은 이동 횟수에 포함하지 않는다.
입력
첫째 줄에 \(N\), \(K\), 밟을 수 없는 계단의 수 \(B\)가 공백으로 구분되어 주어진다.
둘째 줄에는 밟을 수 없는 계단의 번호 \(B\)개가 공백으로 구분되어 주어진다. \(B=0\)이면 둘째 줄은 주어지지 않는다.
출력
조건을 만족하는 방법의 수를 출력한다.
제한
- \(1 \le N \le 15\)
- \(1 \le K \le 15\)
- \(0 \le B \le N-1\)
- 밟을 수 없는 계단의 번호는 서로 다르며, 1 이상 \(N-1\) 이하이다.
예제 입력
3 3 1
2
예제 출력
2
예제 설명
1 2는 2번째 계단을 뛰어넘고, 3은 그 계단을 밟지 않고 곧바로 도착한다. 1 1 1과 2 1은 2번째 계단을 밟으므로 제외된다.
코멘트