EOJ Monthly 2019.9 (based on September Selection)

B. 定向越野

单点时限: 0.5 sec

内存限制: 512 MB

随着教官的一声哨响,定向越野开始了。

定向越野,作为一种竞技项目,提供给队员的只有指北针和地图,要求参赛队员以最快的速度到访每一个标记以完成比赛。这个项目不仅考验参赛队员的跑步速度,也考验着队员对学校的熟悉程度。

Cuber QQ 觉得单纯的定向越野比赛太无聊了。所以他向教官提出了改革意见。于是,今年的定向越野比赛,与以往不太一样。 Cuber QQ 为了增加比赛的趣味性,在 $n$ 个打卡地点分别放了不同的数字卡片,选手需要收集打卡地点的数字卡片并且带到终点。在终点的时候, Cuber QQ 会要求你把这些数字卡片任意地组成 $k$ 个十进制数。你的分数就是这 $k$ 个数中的最小值。为了不为难你,这些数字卡片中不会出现数字 $0$ 。

Cuber QQ 会按照所有人的分数从高到低排序,获得每个参赛选手的排名。

Cuber QQ 对于每一个不同的选手,会给出不同的 $k$ ,所以他需要在选手之前算出最优的答案,即他需要知道 $n$ 个数字组成的 $k$ 个十进制数中最小值最大是多少。

输入格式

输入第一行包含两个整数 $n,p$ ( $1\le n\le 10^5,1\le p\le 10^5$ ) ,分别表示卡片的数量,需要组成的十进制数个数和参赛选手数量。

第二行包含一个长度为 $n$ 的仅包含数字的字符串,表示 $n$ 个卡片上的数字。

接下来的 $p$ 行,每行一个整数 $k_i$ ,表示对第 $i$ 个选手给出的 $k$ ( $1\le k_i\le n$ ) 。

输出格式

输出包含 $p$ 行,每行一个整数,表示每个选手能够获得的最大分数对 $1~000~000~007$ 取模的结果。

样例

Input
3 3
123
1
2
3
Output
321
3
1