Задачи
Инициализация массива
Инициализация массива
Во многих языках программирования есть функции, которые отвечают за заполнение всего массива или некоторой его части определенным значением. В языке \textit{Pascal} это функция \textit{fillchar()}, в \textit{Java} --- \textit{Arrays.fill()}, в \textit{C++} ---\textit{memset()}. В новом языке программирования \textit{J#} появилась функция \textit{mark()}, которая умеет работать только с массивами логического типа.
Функция \textit{mark}, вызванная от двух параметров \textbf{a} и \textbf{b}, присваивает всем элементам массива с индексами от \textbf{a} до \textbf{b}включительно значение \textbf{true}, Так, если взять массив длины \textbf{4}, элементы которого нумеруются с единицы и все значения в котором изначально равны \textbf{false}, и выполнить с ним операции \textbf{mark(1, 3)} и \textbf{mark(2, 4)}, то весь массив окажется заполнен значениями \textbf{true}.
Одним из первых заданий для тех, кто начинает изучать \textit{J#}, является написание программы, содержащей ровно \textbf{M}операций \textbf{mark}, и полностью заполняющей значениями \textbf{true} массив длины \textbf{N}, изначально заполненный значениями\textbf{false}.
Вы быстро справились с этим заданием, и теперь задумались: сколькими различными способами это можно сделать? Различными считаются такие способы, в которых \textbf{i}-я операция \textbf{mark} в двух программах запущена с разными параметрами хотя бы для одного \textbf{i} от \textbf{1} до \textbf{M}. Это число может быть большим, поэтому требуется посчитать его по модулю \textbf{10^9+7}.
\InputFile
В первой строке входного файла даны два натуральных числа \textbf{N} и \textbf{M} --- длина массива и количество операций \textbf{mark}, которые должны быть в программе (\textbf{1} ≤ \textbf{N}, \textbf{M} ≤ \textbf{70}).
\OutputFile
В единственной строке выходного файла выведите остаток от деления числа способов заполнить массив из \textbf{N} элементов значениями \textbf{true} с помощью \textbf{M} вызовов операции \textbf{mark} на число \textbf{10^9+7}.
\Note
Искомые варианты:
\begin{itemize}
\item mark(1, 1); mark(1, 2)
\item mark(1, 1); mark(2, 2)
\item mark(1, 2); mark(1, 1)
\item mark(1, 2); mark(1, 2)
\item mark(1, 2); mark(2, 2)
\item mark(2, 2); mark(1, 1)
\item mark(2, 2); mark(1, 2)
\end{itemize}
Входные данные #1
2 2
Выходные данные #1
7