빙고
시간 제한1초메모리 제한1024 MB
일부가 칠해진 n×n 빙고판과 앞으로 호출될 k개의 수가 주어질 때, 완성되는 줄 수의 기댓값에 (n²)!을 곱한 값을 10⁹+7로 나눈 나머지를 구합니다.
문제
확률과 통계 수강생들이 빙고를 하고 있다. 이들의 빙고 게임은 다음 규칙으로 진행된다.
- 참가자들은 각자 정사각형 보드의 각 칸에 부터 까지의 정수를 겹치지 않게 하나씩 적어 넣는다.
- 매 라운드에 사회자는 부터 까지의 정수 중 하나를 부른다. 이미 부른 수는 고를 수 없다.
- 참가자는 자신의 보드에서 사회자가 부른 수가 있는 칸을 찾아 색을 채운다.
- 사회자가 더 이상 수를 부르지 않기로 하면 게임이 끝나고 점수를 계산한다. 각 참가자의 점수는 색이 채워진 칸으로만 이루어진 줄의 수이다. 고려하는 줄은 가로 줄, 세로 줄, 대각선 줄로 총 개이다.

위 빙고판의 점수는 점이다.
사회자는 매우 공정해서, 매 차례 부를 수 있는 수를 같은 확률로 골라 부른다.
현재까지 진행된 게임 상황을 반영한 참가자 의 빙고판이 주어진다. 사회자가 정확히 개의 수를 추가로 부를 예정일 때, 가 받을 최종 점수의 기댓값을 구하라.
입력
첫 번째 줄에 두 정수 , 가 주어진다. ,
두 번째 줄부터 개의 줄에 걸쳐 빙고판의 상태가 과 로 이루어진 길이 의 문자열로 주어진다. 은 칸에 색이 채워지지 않았음을, 은 색이 채워져 있음을 뜻한다.
입력된 빙고판에는 채워지지 않은 칸이 적어도 개 있음이 보장된다.
출력
가 얻는 최종 점수의 기댓값을 라고 할 때, 첫째 줄에 를 소수 로 나눈 나머지를 출력한다.
주어진 입력 범위에서 가 정수가 된다는 사실을 증명할 수 있다.