Олимпиадный тренинг

Задача . E. Дима и игра


Задача

Темы: дп игры *2600

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

Дима пишет на листке n пар целых чисел (li, ri) (1 ≤ li < ri ≤ p). Далее игроки ходят по очереди. За один ход игрок может выполнить следующее действие:

  1. выбрать номер пары i (1 ≤ i ≤ n), такой что ri - li > 2;
  2. заменить пару номер i на пару или на пару . Запись x обозначает округление к ближайшему меньшему целому числу.

Игрок, который не может сделать ход — проигрывает.

Конечно, Дима хочет, чтобы Аня, которая будет ходить первая, выиграла. Поэтому Дима должен выписать такие n пар целых чисел (li, ri) (1 ≤ li < ri ≤ p), чтобы при оптимальной игре обоих игроков выигрывал первый. Посчитайте, сколькими способами Дима может это сделать. Выведите остаток от деления ответа на число 1000000007 (109 + 7).

Два способа считаются различными, если различаются упорядоченные последовательности выписанных пар.

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

В первой строке даны два целых числа n, p (1 ≤ n ≤ 1000, 1 ≤ p ≤ 109). Числа разделены единичным пробелом.

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

В единственную строку выведите остаток от деления ответа на задачу на число 1000000007 (109 + 7).


Примеры
Входные данныеВыходные данные
1 2 2
0
2 4 4
520
3 100 1000
269568947

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя