U379725 赛博算命

题目描述

(以下为真实故事,有的人已经因此多了个外号叫张大师了) 烨师傅是个武德充沛的acmer,她即将代表学校参加武术大赛。 烨师傅和她的队友们已经到达了赛场,正在摩拳擦掌准备上场~~打架~~交流武术了,但上场之前还需要进行抽签。 比赛为淘汰制,且每一场比赛不存在平局的情况。 现在,抽签结果已经出了,但是并没有给出完整的赛程表,烨师傅急于知道自己和队友第一场的对手(或者轮空),于是她根据给出的赛程表推断出了以下结论: 假设第一轮比赛共有 $ k \geq 2 $名选手。 1、如果存在整数$n$使得$k =2^n$,那么编号为$1$的选手对战编号为$2^n$的选手,那么编号为$2$的选手对战编号为$2^n-1$的选手,以此类推,没有选手轮空,这一场比赛结束后,只剩下$2^{n-1}$个选手。 2、如果存在整数$n$使得$2^{n-1} < k < 2^n$,在保证第一轮结束后还剩下$2^{n-1}$个选手的前提下,编号为$1$的选手对战编号为$k$的选手,编号为$2$的选手对战编号为$k-1$的选手,以此类推,剩下一些编号中间的选手轮空。 烨师傅已经知晓自己和队友们的编号,现在,她想让你求,对手的编号的乘积。 如果轮空,则认为对手的编号为$k+1$号。 结果对$10^9+7$取模。

输入格式

输入数据共包含$2$行 第一行一个正整数$q$和一个整数$k$,表示烨师傅有$q$名队友,一共有$k$名选手参加第一轮比赛,其中$1\leq q \leq 10^6$,$2 \leq k\leq 10^9$,且$q\leq k$ 第二行$q$个整数,第$i$个整数代表队友编号为$n_i$,保证$n_i$不重复,其中$1\leq n_i \leq k$

输出格式

$1$行,一个整数,表示对手编号的乘积。