Потрошение вывески

아직 제출이 없습니다시간 제한1.5초메모리 제한1024 MB

문제

Хэллоуин --- очень популярное событие, в котором участвуют взрослые и дети всех возрастов. Разумеется, каждому владельцу магазина на главной улице города хочется чем-то выделиться, чтобы привлечь к себе как можно больше покупателей.

Некоторые пытаются выставить у себя на витринах самые красивые или, наоброт, жуткие тыквы, а некоторые пытаются креативно оформить рекламные вывески. Владелец <<Лавки Джека-Потрошителя>> решил <<распотрошить>> свою вывеску, чтобы она стала самой оригинальной на всей улице.

Вывеска представляет из себя таблицу размера n×mn \times m, в каждой клетке которой может быть размещена ровно одна буква. Сама рекламная надпись состоит в точности из nmn \cdot m букв. Распотрошить вывеску можно либо по любой строке, либо по любому столбцу. Потрошение по строке номер ii, например, выглядит следующим образом:

  1. Верхняя часть таблицы, состоящая из первых i1i - 1 строк, рекурсивно потрошится, и в нее записываются буквы с 11-й по (i1)m(i - 1) \cdot m-ю;
  2. Строка номер ii обводится, и на ней обозначается направление слева-направо. В этом направлении в ней выписываются буквы с (i1)m+1(i - 1) \cdot m + 1-й по imi \cdot m-ю;
  3. Аналогично верхней части, нижняя часть таблицы (строчки с i+1i + 1-й по nn-ю) тоже рекурсивно потрошится, и в ней записываются оставшиеся буквы.

Симметричным образом происходит потрошение по столбцу --- на нем указывается направление сверху-вниз, в котором выписываются соответствующие буквы, а левая и правая части, если не пусты, рекурсивно потрошатся.

Владельцу лавки стало интересно, сколько есть различных способов распотрошить вывеску. Два способа считаются различными, если хотя бы одна ячейка таблицы, принадлежащая какой-то выделенной строке в одном из способов, принадлежит выделенному столбцу в другом. Обратите внимание, что выделить в таблице 1×11 \times 1 строку и выделить столбец --- разные способы!

Поскольку число способов может быть достаточно большим, выведите его по модулю 109+710^9 + 7.

입력

В единственной строке через пробел дано два целых числа nn и mm (1n,m2001 \leqslant n, m \leqslant 200).

출력

Выведите единственное целое число --- количество способов распотрошить вывеску по модулю 109+710^9 + 7.

힌트

Все возможные потрошения во втором примере: