奇怪的牛客练习赛
题号:NC21371
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

有一场牛客练习赛一共有3道题,现在已知第i道题的分数points[i]
第i题的得分可能在1-points[i]之间
有n个人参加考试,由于一些奇怪的原因
你只知道

1:每个人最后的总分排名是多少
2:每个人的分数是不同的
3:哪个人提交了哪些题的程序

请问一共有多少种不同的总得分方案可以满足上面的条件(两种方案不同当且仅当存在至少一个人的总得分是不一样的),输出答案对1e9+7取模

输入描述:

第一行输入3个整数表示3道题目的得分
第二行先输入一个整数n表示参加考试的人的数量
接下来n行每行输入一个长度为3的字符串 s[i]
s[i][j]='Y'表示第i个人提交了第j题,否则表示没提交,没提交的题都算0分

输出描述:

输出一个整数,对1e9+7取模
示例1

输入

复制
25000 50000 100000
2
YNN
NNN

输出

复制
25000
示例2

输入

复制
30000 60000 90000
2
NYN
NYN

输出

复制
799969993
示例3

输入

复制
25000 45000 110000
2
NNN
YYY

输出

复制
0
示例4

输入

复制
25600 51200 102400
8
NYY
YNY
YYY
YNN
YYN
NNY
NYN
NNN

输出

复制
867560805

备注:

子任务1:n <= 6
子任务2:n <= 10
子任务3:n <= 20