G. Раскраски
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Мальчику Вове очень нравятся раскраски. На этот раз, Вова решил использовать в качестве раскраски свою тетрадь в клеточку. Каждый лист имеет высоту в $$$n$$$ клеточек и ширину в $$$m$$$ клеточек. У Вовы есть фломастер, с помощью которого он и собирается раскрашивать листы тетради. Чтобы процесс раскраски был более интересным, Вова решил установить определенные правила:

  • Каждая клетка должна быть либо польностью закрашена, либо не закрашена вовсе;
  • Если Вова раскрасил клеточку $$$(x, y)$$$, то следующая закрашиваемая клетка должна быть соседней по стороне;
  • Начинать раскрашивать можно с любой клетки;
  • Можно закрасить ранее закрашенную клеточку, в таком случае ничего не произойдет, так как клетка уже была закрашена.

Вова хочет нарисовать все возможные варианты рисунков, которые можно получить, раскрашивая листы тетрадки по таким правилам. Вова интересуется, а сколько листов ему для этого понадобится (листы односторонние). Два рисунка будут считаться различными, если найдется такая клеточка $$$(x, y)$$$, что в одном рисунке она будет закрашена, а в другом нет.

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

В единственной строке задано два целых числа $$$n$$$ и $$$m$$$ — высота и ширина листа тетради в клеточках.

$$$$$$1 \le n, m \le 12$$$$$$

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

Выведите единственное целое число — количество листов, которые Вове понадобятся, чтобы получить все возможные рисунки.

Так как ответ может быть слишком большим, его необходимо вывести по модулю $$$10^9 + 7$$$.

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