직사각형의 개수
시간 제한3초메모리 제한256 MB
모든 크기의 직사각형을 포함한 서로 다른 숫자의 개수별로 세고, 그 개수들로 만든 곱을 1e9+7로 나눈 나머지를 출력한다.
문제
크기의 격자판이 있다. 각 칸에는 1 이상 이하의 숫자가 하나씩 적혀 있다. 행 열 (, )의 칸을 로 나타낸다.
직사각형은 , 을 만족하는 네 정수 , , , 로 정해지고, 와 를 만족하는 모든 칸 를 모은 것이다. 이 직사각형의 크기는 이다. 네 값 가 다르면 서로 다른 직사각형이다.
격자판 안에서 정확히 종류의 숫자가 적혀 있고 크기가 인 직사각형의 개수를 이라 하자. 모든 을 구하는 프로그램을 작성하라.
예를 들어 이고 숫자가 다음 그림과 같이 적혀 있다고 하자.

, , , 이면 네 칸 , , , 가 한 직사각형에 속한다. 이 직사각형만 떼어 적으면 다음과 같다.

이 직사각형에는 1과 2만 있으므로 두 종류의 숫자가 쓰인 직사각형이다.
입력
입력은 하나의 테스트 케이스로 이루어진다.
첫째 줄에 세 정수 , , (, )가 공백으로 구분되어 주어진다.
둘째 줄부터 개의 줄에 걸쳐 격자판의 각 줄에 적힌 숫자 개가 공백 없이 주어진다. 각 숫자는 1 이상 이하이다.
출력
모든 을 출력하기에는 시간이 너무 오래 걸린다. 첫째 줄에 다음 값을 1000000007로 나눈 나머지를 출력한다.