집합 $X$를 다음 규칙으로 정의되는 가장 작은 집합이라고 하자.
$X$의 원소를 올바른 괄호 표현식이라고 부른다. 예를 들어 다음 문자열들은 올바른 괄호 표현식이다.
()(())()
(()(()))
반면 다음 문자열들은 올바른 괄호 표현식이 아니다.
(()))(()
())(()
올바른 괄호 표현식 $E$에 대해, $E$의 길이는 $E$에 들어 있는 괄호 문자의 개수이다. $E$의 깊이 $D(E)$는 다음과 같이 정의된다.
$$ D(E) = \begin{cases} 0 & E\text{가 빈 문자열인 경우} \ D(A) + 1 & E = (A),\ A \in X \text{인 경우} \ \max(D(A), D(B)) & E = AB,\ A, B \in X \text{인 경우} \end{cases} $$
두 양의 정수 $n$과 $d$가 주어질 때, 길이가 정확히 $n$이고 깊이가 정확히 $d$인 올바른 괄호 표현식의 개수를 구하여라.
한 줄에 두 정수 $n$과 $d$가 공백 하나로 구분되어 주어진다. $2 \le n \le 38$, $1 \le d \le 19$이다.
길이가 $n$이고 깊이가 $d$인 올바른 괄호 표현식의 개수를 정수 하나로 출력한다.
길이가 $6$이고 깊이가 $2$인 올바른 괄호 표현식은 정확히 세 개 있다.
(())()
()(())
(()())