#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>usingnamespace std;constint N =14, M =1<<12;constint mod =1e8;int n, m;
vector<int> state;int g[N];
vector<int> head[M];int f[N][M];boolcheck(int x){for(int i =0; i < m -1; i++){if((x >> i)&1&&(x >>(i +1))&1){returnfalse;}}returntrue;}intmain(){
cin >> n >> m;for(int i =1; i <= n; i++){for(int j =0; j < m; j++){int x;
cin >> x;
g[i]+=!x *(1<< j);}}//预处理合法状态for(int i =0; i <1<< m; i++){if(check(i)) state.push_back(i);}//预处理合法状态的转移for(int i =0; i < state.size(); i++){for(int j =0; j < state.size(); j++){int a = state[i], b = state[j];if((a & b)==0) head[i].push_back(b);}}
f[0][0]=1;//第0行状态是0的方案是1for(int i =1; i <= n; i++){for(int j =0; j < state.size(); j++){if((g[i]& state[j])==0){for(auto b:head[j]){if((g[i -1]& b)==0){
f[i][state[j]]=(f[i][state[j]]+ f[i -1][b])% mod;}}}}}int res =0;for(int i =0; i <1<< m; i++) res =(res + f[n][i])% mod;
cout << res << endl;return0;}