만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

이그렉과 괄호 트리

시간 제한2초메모리 제한1024 MB

요약
여는 괄호가 n개인 올바른 괄호 문자열을 후위 순회로 만드는 순서 있는 괄호 트리의 개수를 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 6점

유형
조합론, 수학, 트리
정답자
아직 제출이 없습니다

문제

모두가 알다시피 픽시키 중에서 이그렉이 학교에서 가장 똑똑하다. 그도 우리처럼 어려운 문제 푸는 것을 좋아한다. 최근 그는 트리, 그중에서도 괄호 트리에 관심을 갖게 되었지만, 생각보다 까다로웠다. 아래는 그가 풀지 못한 문제 중 하나다.

괄호 트리는 루트가 있는 트리다. 각 정점에는 여는 괄호 또는 닫는 괄호가 적혀 있다. 각 정점의 자식은 순서가 정해져 있고, 각 자식도 괄호 트리다.

rootTroot_T는 괄호 트리 TT의 루트를, ava_v는 정점 vv에 적힌 괄호를 나타낸다.

두 괄호 트리 AA와 BB는 rootAroot_A와 rootBroot_B에 적힌 괄호가 같고, 두 루트의 자식 수가 같으며, 모든 ii에 대해 rootAroot_A의 ii번째 자식과 rootBroot_B의 ii번째 자식이 동치일 때 동치라고 한다.

괄호 트리의 정점 vv에 대해 다음과 같이 재귀 함수 f(v)f(v)를 정의한다.

vv가 리프이면 f(v)=avf(v)=a_v이다.

그렇지 않으면 f(v)=f(c1)+f(c2)+⋯+f(ck)+avf(v)=f(c_1)+f(c_2)+\dots+f(c_k)+a_v이다. 여기서 c1,…,ckc_1, \dots, c_k는 vv의 자식을 순서대로 나열한 것이다.

이 함수의 결과는 여는 괄호와 닫는 괄호로 이루어진 문자열이다.

f(rootT)f(root_T)가 여는 괄호를 nn개 가진 올바른 괄호 문자열이 되도록 하는 서로 다른 괄호 트리 TT는 몇 개인가?

입력

정수 nn (1≤n≤1051 \le n \le 10^5)이 한 줄에 주어진다. 이는 ff를 적용해서 얻은 괄호 문자열에 들어 있는 여는 괄호의 개수다.

출력

답을 109+710^9+7로 나눈 나머지를 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    1
    
    예상 출력
    1
    
  2. 예제 2

    입력
    2
    
    예상 출력
    10
    
  3. 예제 3

    입력
    3
    
    예상 출력
    210