#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define lowbit(x) x&(-x)
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll, ll> pll;
const int N = 5e5+5;
const ll mod = 100000000;
const int INF = 0x3f3f3f3f;
const double eps =1e-9;
const double PI=acos(-1.0);
const int dir[4][2]={-1,0,1,0,0,-1,0,1};
const int exdir[4][2]={1,1,1,-1,-1,1,-1,-1};
ll qpow(ll x,ll y){
ll ans=1,t=x;
while(y>0){
if(y&1)ans*=t,ans%=mod;
t*=t,t%=mod;
y>>=1;
}
return ans%mod;
}
ll dp[13][(1<<12)+5];
int s[13][13],n,m;
void solve(){
memset(dp,0,sizeof(dp));
memset(s,0,sizeof(s));
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)cin>>s[i][j];
for(int i=n;i>0;i--){
for(int j=0;j<(1<<m);j++){
int f=1;
for(int k=0;k<m;k++){
if((j&(1<<k)&&!s[i][m-k])||(k<m-1&&j&(1<<k)&&j&(1<<k+1))){f=0;break;}
}
if(f){
if(i==n)dp[i][j]=1;
else {
for(int k=0;k<(1<<m);k++){
if(!(k&j))dp[i][j]+=dp[i+1][k]%mod,dp[i][j]%=mod;
}
}
}
}
}
ll ans=0;
for(int i=0;i<(1<<m);i++){
ans+=dp[1][i]%mod,ans%=mod;
}
cout<<ans;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
while(cin>>n>>m)solve(),cout<<'\n';
return 0;
}