zz写了一封长度为n的信。他想把它作为生日礼物送给他喜欢字符串的朋友kk。他把信写在一张神奇的纸上,但他很惊讶,因为在写信时发现有些字符消失了。那是因为这张神奇的纸不允许英文字母表中的某个字符i的连续数量超过ai。例如,如果 a1 = 2,他不能在这张纸上用长度为 3 或更大的字符串写字符“a”。允许使用字符串“aa”,而不允许使用字符串“aaa”。
zz决定信的内容拆分为一些非空的子字符串,以便他可以将每个子字符串写在独立的魔法纸上并满足条件。字符串的总长度之和为 n,并且不重叠。例如,如果a1=2并且他想发送字符串“aaa”,他可以将其拆分为“a”和“aa”并使用2张魔法纸,或者分成“a”,“a”和“a”并使用3张魔法纸。他不能将其拆分为“aa”和“aa”,因为它们的长度之和大于n。如果内容满足条件,他可以将消息拆分为单个字符串。
字符串 s 的子字符串是由字符串 s 中的一些连续字符组成的字符串,字符串 “ab”、“abc” 和 “b” 是字符串 “abc” 的子字符串,而字符串 “acb” 和 “ac” 不是。任何字符串都是自身的子字符串。
当zz在考虑如何拆分信时,kk告诉他有很多方法可以拆分它。之后,zz问了你三个问题:
1.有多少种方法可以将字符串拆分为子字符串,以便每个子字符串都满足神奇纸张的条件,它们的长度之和为 n 并且它们不重叠?计算答案对 109+7取模。
2.在某些有效拆分中可以出现的子字符串的最大长度是多少?
3.信能被拆分出来的最小子串的数量是多少?
如果拆分位置的集合不同,则两种方式被视为不同。例如,拆分“aa|a”和“a|aa”被视为消息“aaa”的不同拆分。
第一行包含一个整数 n (1≤n≤10^3),表示消息的长度。
第二行包含长度为 n 的消息 s,该消息由小写英文字母组成。
第三行包含 26 个整数 a1,a2,...,a26 (1≤ax≤10^3)− 每个字母可以出现的子字符串的最大长度。
打印三行。
在第一行中打印将消息拆分为子字符串并满足问题模 10^9+7 中提到的条件的方法数量。
在第二行中,打印所有方式上最长子字符串的长度。
在第三行中,打印所有方式的最小子字符串数。
3 aab 2 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
3 2 2
10 abcdeabcde 5 5 5 5 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
401 4 3
说明
3
aab
2 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
3
2
2