D. Дима и фигура
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
256 мегабайт
ввод
stdin
вывод
stdout

Дима любит рисунки на клетчатом листке бумаги. А еще больше Дима любит рисунки, которые изображают одну из его любимых фигур.

Клетчатый листок размера n × m представляет собой таблицу, состоящую из n строк и m столбцов. На чистом клетчатом листке — все клетки белые. Рисунком Дима называет изображение на чистом клетчатом листке, полученное закрашиванием некоторых клеток в черный цвет.

Рисунок изображает одну из любимых фигур Димы, если выполняются следующие условия:

  • Рисунок содержит хотя бы одну закрашенную клетку;
  • Все закрашенные клетки образуют связное множество, то есть из любой закрашенной клетки можно дойти до любой другой (из клетки можно перейти в соседнюю по стороне);
  • Минимальное количество перемещений, за которое можно дойти из закрашенной клетки с координатами (x1, y1) в закрашенную клетку с координатами (x2, y2), двигаясь только по закрашенным клеткам, равно |x1 - x2| + |y1 - y2|.

Сейчас Диму интересует вопрос: сколько существует рисунков на листке размера n × m, которые изображают одну из его любимых фигур? Посчитайте это количество по модулю 1000000007 (109 + 7).

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

В первой строке даны два целых числа n и m — размеры листка (1 ≤ n, m ≤ 150).

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

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

Примеры
Входные данные
2 2
Выходные данные
13
Входные данные
3 4
Выходные данные
571