Testing Round 6 |
---|
Закончено |
Поликарп уверен, что жизнь его поддается описанию: «сначала идет белая полоса, потом черная, потом снова белая». Вот и в ближайшие n дней он уверен — это правило будет выполняться. Поликарп знает, что его ожидает w хороших событий и b не очень. Каждый день будет происходить хотя бы одно событие. Так как каждый из дней однозначно характеризуется как часть белой или черной полосы, в каждый из дней будут случаться события только одного типа (либо хорошие, либо не очень).
Какое количество различных вариантов развития истории может быть в ближайшие n дней, если Поликарпа ждет сначала белая полоса (полоса из исключительно хороших событий, длина полосы не менее 1 дня), потом черная полоса (полоса из исключительно событий «не очень», длина полосы не менее 1 дня) и снова белая полоса (полоса из исключительно хороших событий, длина полосы не менее 1 дня). Каждый из n дней будет принадлежать ровно к одной из трех полос.
Учтите, что события даже одного типа различимы между собой. Даже если события происходят в один день, они происходят в некотором порядке (одновременных событий не бывает).
Напишите программу, которая выводит количество возможных конфигураций распределения событий по дням по модулю 1000000009 (109 + 9). Ознакомьтесь с примерами для уточнения того, какие способы следует различать.
В единственной строке входных данных записаны целые числа n, w и b (3 ≤ n ≤ 4000, 2 ≤ w ≤ 4000, 1 ≤ b ≤ 4000). Гарантируется, что w + b ≥ n.
Выведите искомое количество способов по модулю 1000000009 (109 + 9).
3 2 1
2
4 2 2
4
3 2 2
4
Будем обозначать хорошие события цифрами от 1, а события «не очень» буквами от 'a'. Вертикальными чертами будем разделять дни.
В первом примере возможные варианты: «1|a|2» и «2|a|1». Во втором примере возможные варианты: «1|a|b|2», «2|a|b|1», «1|b|a|2» и «2|b|a|1». Во третьем примере возможные варианты: «1|ab|2», «2|ab|1», «1|ba|2» и «2|ba|1».
Название |
---|