D. Вруны и Сережа
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
stdin
вывод
stdout

За столом в ряд сидят n человек. Про каждого человека известно, что он либо всегда говорит правду, либо всегда лжет.

Маленький Сережа спросил их: сколько среди вас человек, которые всегда говорят правду? Каждый из сидящих за столом знает всю информацию (кто правдивый человек, а кто врун) про всех людей, сидящих за столом. Правдивые люди скажут правильный ответ, вруны скажут любое целое число от 1 до n, которое не является правильным ответом. Каждый врун выбирается свой ответ независимо от остальных врунов, поэтому ответы двух разных врунов могут отличаться.

Сережа не знает никакой информации про людей, кроме их ответов на заданный вопрос. Он записал на листок бумаги n целых чисел a1, a2, ..., an, где ai — ответ i-го в ряду человека. По этой последовательности Сережа определил, что ровно k человек из сидящих за столом точно врут.

Сереже интересно, сколько существует вариантов ответов людей (последовательностей ответов a длины n), при которых можно будет сказать, что ровно k человек, из сидящих за столом, точно врут. Так как описанных вариантов ответов может быть достаточно много, посчитайте остаток от деления количества вариантов на 777777777.

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

В первой строке задано два целых числа n, k, (1 ≤ k ≤ n ≤ 28). Гарантируется, что n — степень числа 2.

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

Выведите единственное целое число — ответ на задачу по модулю 777777777.

Примеры
Входные данные
1 1
Выходные данные
0
Входные данные
2 1
Выходные данные
2