#JXGQ2001D. 强哥的彩带

强哥的彩带

题目描述

强哥最近发现了一箱神奇的彩带,这些彩带可是幼儿园的宝贝!它们共有 26 种不同的颜色,每条彩带都被切成了整齐的小段,每一段都是纯色的。为了方便记住这些颜色,强哥用 a 到 z 这 26 个字母来代表这些颜色。

但是,强哥是个追求完美的人!他觉得这些彩带还远远不够好看,于是他拿起剪刀,“咔嚓咔嚓”把彩带全剪开,变成了一堆单色的彩带片。每种颜色的彩带片,强哥都数得一清二楚,比如 a 颜色有 aia_i 片,b 颜色有 bib_i 片……

接下来,强哥想按照他心目中的标准,重新拼出一根长度为 nn 的“完美彩带”!他的 “完美彩带 SS 必须满足两个重要的条件:

  1. 这根彩带的颜色必须越来越“有序”,简单来说,颜色是不能“乱来”的,也就是任意相邻的彩带片都得满足 SiSi+1S_i \leq S_{i+1},强哥绝不允许前面彩带比后面的颜色还大,必须是从小到大排!
  2. 彩带必须藏着一个“小彩蛋”——在这根“完美彩带”里,一定要包含一段长为 mm“次完美彩带” bb,虽然它可以不连续,但它必须完整地出现在彩带里。比如,如果 b=abcdb=abcd次完美彩带abcdabcd),那么像 S=abccdS=abccd 或者 S=abbbcdS=abbbcd 这种彩带,强哥都觉得够完美。

现在,强哥坐在一大堆彩带片中间,抓耳挠腮地想着:到底有多少种不同的“完美彩带”可以拼出来呢?

由于可能的拼接方案太多了,强哥的脑袋要“爆炸”了!他赶紧求助你来帮忙计算一下,并且把答案对 1e9+71e9+7 取模,别让数字太大哟。

输入格式 (d.in)

输入第一行包含两个整数 n,mn,mnn 表示完美彩带的长度,mm 表示次完美彩带的长度。

输入第二行包含 2626 个整数 aia_i,依次表示 aza \sim z 每种颜色的彩带片数量

输入第三行包含一个字符串 bb,依次表示次完美彩带的颜色,其中每种颜色用一个小写字母表示

输出格式 (d.out)

输出一个整数,表示强哥能组合出多少种不同的完美彩带,答案对 1e9+71e9+7 取模,若不存在合法方案则输出 00

数据范围

测试点编号 mm \leq 特殊性质
11 10001000 只有一个 aia_i 不是 00
22 11
33 22
44 10001000 只有两个 aia_i 不是 00
55 所有 aia_i 之和小于 2020
66 10001000 答案小于 109+710^9+7
77 可能的方案数为 00
88 bb 序列中存在bi>bi+1b_i > b_{i+1}
9109 \sim 10

对于所有数据,有 1mn1000,1ai1091 \leq m \leq n \leq 1000, 1 \leq a_i \leq 10^9

样例输入

6 4
1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 9
abcd

样例输出

277

样例解释

可能的方案为

  1. abccdabccd 后拼接 dzd \sim z 中的任意一个字符,方案为 2323
  2. abcddabcdd 后拼接 eze \sim z 中的任意一个字符,方案为 2222
  3. 22 号方案,abcdeabcdyabcde \sim abcdy 依次有 21+20+19+1=23121+20+19+ \dots 1 =231
  4. abcdzzabcdzz 一种

共计方案 23+22+231+1=27723+22+231+1=277