eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Инициализация массива

Инициализация массива

Во многих языках программирования есть функции, которые отвечают за заполнение всего массива или некоторой его части определенным значением. В языке \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}
Лимит времени 2 секунды
Лимит использования памяти 256 MiB
Входные данные #1
2 2
Выходные данные #1
7