1 #include<cstdio>
2 #include<cstring>
3 #include<algorithm>
4 #define mod 100000000
5 using namespace std;
6 int dp[13][1<<12],cur[13];
7 int can[1<<12],tot,m,n;
8 int main()
9 {
10 while(~scanf("%d%d",&m,&n))
11 {
12 tot = 0;
13 for(int i=0;i<(1<<n);i++)
14 if((i&(i<<1))==0) can[tot++] = i;
15 memset(cur,0,sizeof(cur));
16 memset(dp,0,sizeof(dp));
17 for(int i=1;i<=m;i++)
18 {
19 for(int j=0;j<n;j++)
20 {
21 int num;
22 scanf("%d",&num);
23 if(num==0) cur[i] = (cur[i]|(1<<j));
24 }
25 }
26 for(int i=0;i<tot;i++)
27 if((cur[1]&can[i])==0) dp[1][can[i]] = 1;
28 for(int i=1;i<m;i++)
29 {
30 for(int j=0;j<tot;j++)
31 {
32 if((can[j]&cur[i])==0)
33 {
34 for(int k=0;k<tot;k++)
35 {
36 if(((can[k]&cur[i+1])==0)&&((can[k]&can[j])==0))
37 dp[i+1][can[k]] = dp[i+1][can[k]]+dp[i][can[j]];
38 }
39 }
40 }
41 }
42 int ans = 0;
43 for(int i=0;i<tot;i++)
44 {
45 ans += dp[m][can[i]];
46 ans = ans % mod;
47 }
48 printf("%d\n",ans);
49 }
50 }