Albert는 길이가 n인 길다란 케이크를 구웠다. 이 케익은 n등분 할 수 있도록 총 n개의 칸으로 미리 나눠져있고, 일부 칸에는 과일 토핑이 올려져있다.
예를 들어 아래 그림은 n=8인 케이크이고 0은 토핑이 없는 칸, 1은 과일 토핑이 있는 칸을 나타낸다. 이를 정수 배열로 나타내면 A=\[0,1,1,0,0,1,1,0]로 표현할 수 있다. 구체적으로, A\[i]는 i번째 칸에 토핑이 있으면 1, 없으면 0이다.

Albert는 이 케이크를 정확히 k−1번 잘라 k개의 조각으로 나누고 싶은데, 아래 조건을 만족하도록 자르고 싶다:
예를 들어 k=2 인 경우 버려지는 칸이나 조각 없이 위 케이크를 자를 수 있는 방법은 총 7가지 존재한다. 그 중 조건 1을 만족하는 경우는 아래와 같이 세 가지 방법이다. 각 케이크 조각에는 토핑이 올라간 칸이 두 개씩 있다.



다른 예로, 아래 그림은 n=5, A=\[0,1,0,1,0], k=2인 경우 위 조건들을 만족하면서 케이크를 자를 수 있는 두 가지 방법을 나타낸다.

입력으로 n, k, 그리고 토핑의 유무를 나타내는 배열 A가 주어졌을 때, 조건을 만족하며 케이크를 자를 수 있는 방법이 총 몇 가지 있는지 구해보자. 단, 답이 매우 클 수 있으므로 109+7 로 나눈 나머지를 출력한다.
첫 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스는 두 줄에 나누어 주어진다. 첫 줄에 n과 k가 공백으로 구분되어 주어진다. 둘째 줄에 배열 A의 값이 주어지는데, 공백없이 길이 n인 문자열 형태로 주어진다.
각 테스트 케이스의 정답을 각 줄에 출력한다.