Торообразные билеты
На планете Айсем пассажирские билеты для нового средства передвижения планируется сделать торовидной формы.
Каждый тор изготовлен из одного черного прямоугольного резинового листа размером N×M клеток. Некоторые клетки отмечены белым, кодируя пункты отправления и назначения.
При покупке билета машина по их выдаче берет резиновый лист, отмечает на нем маршрут, и передает его пассажиру. Дальше пассажир должен склеить билет.
Билет должен быть склеен следующим образом. Сначала следует склеить две большие стороны, образовав цилиндр. Основания цилиндра - окружности, длины которых равны длине меньшей стороны исходного куска резины. Соединяем и склеиваем основания цилиндра. Их следует склеить таким образом, чтобы склеиваемые ячейки принадлежали одной и той же строке. Внутренняя и внешняя части куска различимы.
Результирующий тор является действующим билетом.
Заметим, что если исходный кусок резины квадратный, то существует два топологически разных способа сделать тор из куска резины.
Материал билета и свойства клея настолько хороши, что невозможно обнаружить шов, и это в свою очередь создает некоторые проблемы. Один и тот же тор можно сделать из разных исходных кусков. А также из одного куска можно изготовить торы, которые выглядят немного по-разному.
Задача транспортных компаний на Айсеме состоит в подсчете количества различных маршрутов, которое они смогут организовать при условии выполнения следующих условий:
билеты на разные маршруты должны представляться разными торами;
если некоторый кусок резины уже был помечен некоторым маршрутом, его нельзя использовать в качестве билета для другого маршрута.
Помогите вычислить количество маршрутов, которое можно организовать.
Входные данные
Два числа N и M (1 ≤ N, M ≤ 20).
Выходные данные
Количество маршрутов, которое смогут организовать транспортные компании на Айсеме.