小Q有一个神奇的机器,可以随机生成某个长度的字符串(包括长度为0的空串)。字符串的不同位之间相互独立,同一字符在任一位上出现的概率都是相同的。
小Q发现了一个自己很喜欢的字符串S,他希望知道如果他让机器生成一个长度为k的字符串,S是该字符串的子序列的概率是多少。
一个字符串的子序列是指从该字符串中取部分字符(可以全取或全不取),取出来的字符按在原串中的顺序排列而成的字符序列。如空串、”aba”、”aac”、”ababc”都是”ababc”的子序列,而”cab”则不是。
第一行26个非负数,表示从’a’到’z’每个字符的权重,即输入weight[‘a’..’z’](0≤weight[i]≤1000),字符ch在任一位上出现的概率为
∑i=′a′i=′z′weight[i]weight[ch]第二行一个字符串 S(1≤∣S∣≤100)。
第三行一个正整数 T(1≤T≤100),表示数据组数。
接下来T行,每一个一个正整数 k(0≤k<260),表示机器生成的字符串长度。
保证至少有一个weight[i]不为0。
T行,每行一个正整数,表示S是该字符串的子序列的概率,对998244353取模的结果。
可以证明答案一定可以表示成 pq,其中q为非负整数,p为正整数,且存在一个正整数p(−1),使得 p(−1)×p≡1 mod 998244353,即p在模998244353下一定存在逆元,你只需输出q×p(−1)模998244353的值即可。
输入样例:
30 40 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
abc
6
0
1
2
3
4
5
输出样例:
0
0
0
387318809
163712074
688748674
样例解释:
a在每一位上出现的概率为0.3,b为0.4,c为0.3,其余字符不可能出现。
k=0时,只能生成空串,k=1,2时,长度小于3,不可能包含子序列”abc”。
k=3时,长度为3的串只有abc,概率为0.3⋅0.4⋅0.3=0.036,模998244353为387318809。
k=4时,长度为4的串中abc*,ab*c,a*bc,*abc符合条件,计算得概率为0.1080,模998244353为163712074。
k=5时,概率为0.20412,模998244353为688748674。