# Campus Design

Time Limit: 6000MS

Memory Limit: 65535KB

## Description

Nanjing University of Science and Technology is celebrating its 60th anniversary. In order to make room for student activities, to make the university a more pleasant place for learning, and to beautify the campus, the college administrator decided to start construction on an open space.

The designers measured the open space and came to a conclusion that the open space is a rectangle with a length of n meters and a width of m meters. Then they split the open space into n × m squares. To make it more beautiful, the designer decides to cover the open space with 1 × 1 bricks and 1 × 2 bricks, according to the following rules:

1. All the bricks can be placed horizontally or vertically

2. The vertexes of the bricks should be placed on integer lattice points

3. The number of 1 × 1 bricks shouldn’t be less than C or more than D. The number of

1 × 2 bricks is unlimited.

4. Some squares have a flowerbed on it, so it should not be covered by any brick. (We use 0 to represent a square with     flowerbed and 1 to represent other squares)

Now the designers want to know how many ways are there to cover the open space, meeting the above requirements.

## Input

There are several test cases, please process till EOF.

Each test case starts with a line containing four integers N (1 ≤ N ≤ 100), M (1 ≤ M ≤ 10), C, D(1 ≤ C ≤ D ≤ 20). Then following N lines, each being a string with the length of M . The string consists of ‘0’ and ‘1’ only, where ‘0’ means the square should not be covered by any brick, and ‘1’ otherwise.

## Output

Please print one line per test case. Each line should contain an integers representing the answer to the problem (mod 109 + 7).

## Sample Input

1 1 0 0
1
1 1 1 2
0
1 1 1 2
1
1 2 1 2
11
1 2 0 2
01
1 2 0 2
11
2 2 0 0
10
10
2 2 0 0
01
10
2 2 0 0
11
11
4 5 3 5
11111
11011
10101
11111

## Sample Output

0
0
1
1
1
2
1
0
2
954

None

None