AT_nomura2020_f Sorting Game

题目描述

高桥君和雪君想出了一个使用数列的游戏,规则如下: - 准备一个长度为 $ M $ 的数列 $ a\ =\ a_1,\ a_2,\ \ldots,\ a_M $,由介于 $ 0 $ 和 $ 2^N-1 $ 之间的整数构成。 - 首先,雪君可以进行以下操作任意次: - 选择一个正整数 $ d $,对于所有的 $ i~(1\ \leq\ i\ \leq\ M) $,将 $ a_i $ 用二进制表示时的第 $ d $ 位(最低位为第 $ 1 $ 位)变为 $ 0 $。 - 在雪君的所有操作结束后,高桥君可以进行以下操作任意次,目标是使 $ a $ 升序排列。这里,序列 $ a $ 是升序的,当且仅当对于任意 $ i\ ~\ (1\ \leq\ i\ \leq\ M\ -\ 1) $,都有 $ a_i\ \leq\ a_{i\ +\ 1} $。 - 选择序列 $ a $ 中相邻的两个元素 $ a_i,\ a_{i\ +\ 1} $,如果 $ a_i $ 和 $ a_{i\ +\ 1} $ 用二进制表示时恰好有一位不同,则交换 $ a_i $ 和 $ a_{i\ +\ 1} $。 可以用于游戏的、由介于 $ 0 $ 和 $ 2^N-1 $ 之间的整数构成且长度为 $ M $ 的序列共有 $ 2^{NM} $ 个。 其中,有多少个序列满足:在游戏中使用时,无论雪君如何进行操作,高桥君都能通过适当的操作将序列升序排列?请输出答案对 $ 10^9\ +\ 7 $ 取模的结果。

输入格式

输入以以下格式从标准输入给出: > $ N $ $ M $

输出格式

输出满足条件的序列个数对 $ 10^9\ +\ 7 $ 取模的结果。条件为:在游戏中使用时,无论雪君如何进行操作,高桥君都能通过适当的操作将序列升序排列。

说明/提示

### 约束条件 - 输入均为整数。 - $ 1\ \leq\ N\ \leq\ 5000 $ - $ 2\ \leq\ M\ \leq\ 5000 $ ### 样例解释 1 例如,考虑序列 $ a\ =\ 1,\ 3,\ 1,\ 3,\ 1 $。此时: - 将各元素的第 $ 1 $ 位变为 $ 0 $,则 $ a $ 变为 $ 0,\ 2,\ 0,\ 2,\ 0 $; - 将各元素的第 $ 2 $ 位变为 $ 0 $,则 $ a $ 变为 $ 1,\ 1,\ 1,\ 1,\ 1 $; - 将各元素的第 $ 1 $ 位和第 $ 2 $ 位都变为 $ 0 $,则 $ a $ 变为 $ 0,\ 0,\ 0,\ 0,\ 0 $。 包括雪君不进行操作而 $ a $ 不变的情况,在每种情况下,高桥君都可以通过重复交换二进制表示恰好有一位不同的相邻元素,将序列升序排列。 因此,这个序列是满足条件的序列之一。