H. Сбалансированные деревья
ограничение по времени на тест
0.5 секунд
ограничение по памяти на тест
64 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

Скажем, что дерево с выделенным корнем и упорядоченными списками сыновей для каждой вершины сбалансированное, если все расстояния от корня до листьев равны. Найдите количество различных сбалансированных деревьев из $$$n$$$ вершин. Два дерева считаются различными, если им соответствует разные скобочные последовательности.

Более подробно, каждое дерево можно представить в виде скобочной последовательности. Для этого определим функцию $$$f$$$ следующим образом:

  • если $$$x$$$ — лист, то $$$f(x) = ()$$$;
  • иначе $$$f(x) = (f(\texttt{сын 1}) f(\texttt{сын 2}) ... f(\texttt{сын n}))$$$.

Значение функции $$$f$$$ от корня и даст соответствующую скобочную последовательность.

Входные данные

Единственная строка содержит одно целое число $$$n$$$ ($$$1 \leqslant n \leqslant 500$$$) — количество вершин в дереве.

Выходные данные

Выведите одно целое число — количество сбалансированных деревьев из $$$n$$$ вершин, взятое по модулю $$$10^9+7$$$.

Примеры
Входные данные
1
Выходные данные
1
Входные данные
2
Выходные данные
1
Входные данные
3
Выходные данные
2
Входные данные
4
Выходные данные
3
Входные данные
5
Выходные данные
5
Входные данные
6
Выходные данные
8