1 #include<bits/stdc++.h>
2 #define Set int
3 using namespace std;
4 const int mod=1e8;
5 int n,m;
6 Set cur[15];
7 Set state[1500];
8 int cnt,ans;
9 int f[15][1500];
10
11 inline void first_deal()
12 {
13 Set sum=1<<n;
14 for(Set i=0;i<sum;i++)
15 if( !(i&(i<<1)) ) state[++cnt]=i;
16 }
17
18 inline bool fit(int x,int k)
19 {
20 return !(state[x]&(~cur[k]));
21 }
22
23 int main()
24 {
25 scanf("%d%d",&m,&n);
26 int x;
27 first_deal();
28 for(int i=1;i<=m;i++)
29 for(int j=n-1;j>=0;j--){
30 scanf("%d",&x);
31 if(x) cur[i]|=(1<<j);//把can的第j位设置为0;
32 }
33 for(Set i=1;i<=cnt;i++)
34 if(fit(i,1)) f[1][i]=true;
35 for(int i=2;i<=m;i++)
36 for(int j=1;j<=cnt;j++) //枚举当前状态编号
37 {
38 if(!fit(j,i)) continue;
39 for(int k=1;k<=cnt;k++) //枚举上一层可行状态编号
40 {
41 if(!fit(k,i-1)) continue;
42 if(!(state[j]&state[k]))
43 f[i][j]=(f[i][j]+f[i-1][k])%mod;
44 }
45 }
46 for(int i=1;i<=cnt;i++)
47 ans=(ans+f[m][i])%mod;
48 printf("%d",ans);
49 return 0;
50 }