Description
小X 离开家的时候忘记带走了钱包,掉下的硬币在桌子上排成了一列。正在等着哥哥回来的小Y坐在桌子旁边,无聊地翻着桌子上的硬币。
出于某种爱好,小Y 一次必定会同时翻转M 枚硬币。因为小Y 是一个爱动脑的小学生,这样进行了若干次以后她很快想到了一个问题:有多少种方法可以在K 次翻转后把硬币由原来的状态变成如今这样呢?
由于小Y 是个好学的小学生,她只须要你告诉她方案数对1000000007 取模的值以方便她进行验算就能够了。code
Input
第一行,包含三个字符N;K;M,表示硬币的数量,翻转的次数和每次翻转的硬币数量。
第2 3 行,包含N 个字母,表示硬币在一开始的状态和最终要变成的状态。1 表示正面而0 表示背面。ip
Output
一行包含一个整数,表示方案数对1000000007 取模的值。input
Sample Input
3 2 1 100 001
Sample Output
2 样例解释: 100->101->001 100->000->001
Data Constraint
• 对于30% 的数据,N <=4; 0 <= K <= 5。 • 对于60% 的数据,N <= 10。 • 对于100% 的数据,1 <= N <= 100; 0 <= K <= 100; 0 <= M <= N。
io