Мама испекла Мише на день рождения торт. Торт имеет форму
выпуклого многоугольника с n вершинами. Вместе с
гостями и родственниками у Миши на празднике оказалось k
человек. В нужный момент Миша планирует разрезать торт на k
частей. Каждый разрез должен представлять собой диагональ исходного
многоугольника. Чтобы торт не развалился, разрезы не должны пересекаться нигде,
кроме как в вершинах торта.
Как юного математика, Мишу заинтересовал вопрос, сколько
существует способов разрезания торта на k частей
указанным выше способом. Порядок выполнения разрезов не важен. Помогите Мише
найти ответ на интересующий его вопрос.
Напишите программу, которая по заданным значениям чисел n и k определяет
количество способов разрезания на k частей торта
с n вершинами как указано выше.
Формат входных данных
Входной файл содержит два целых числа n
и k (1 <=k<=n<= 30, n³
3).
Формат выходных данных
Выведите в выходной файл одно число — искомое количество
способов разрезания торта. Подсказка: для ограничений задачи это число меньше 263.
Примеры входных и выходных файлов
stdin
stdout
4 2
2
6 4
14
3 2
0
Пояснения к примерам
Все
способы разрезания торта с шестью вершинами на четыре части приведены на
следующем рисунке.
We can all benefit by doing occasional "toy" programs, when artificial restrictions are set up, so that we are forced to push our abilities to the limit. The art of tackling
miniproblems with all our energy will sharpen our talents for the real problems. Donald E. Knuth.