#include <cstdio>
#include <cstring>
char buf[5000000], *ptr = buf - 1;
inline int readint(){
int n = 0;
char ch = *++ptr;
while(ch < ‘0‘ || ch > ‘9‘) ch = *++ptr;
while(ch <= ‘9‘ && ch >= ‘0‘){
n = (n << 1) + (n << 3) + ch - ‘0‘;
ch = *++ptr;
}
return n;
}
const int mod = 100000000;
int s[15], dp[15][4096] = {0};
int main(){
fread(buf, sizeof(char), sizeof(buf), stdin);
int M, N, Max;
M = readint();
N = readint();
Max = (1 << N) - 1;
for(int x, i = 1; i <= M; i++){
x = 0;
for(int j = 1; j <= N; j++) x = (x << 1) + readint();
s[i] = x;
}
for(int i = s[1]; ; i = (i - 1) & s[1]){
if(i & i >> 1) continue;
dp[1][i] = 1;
if(!i) break;
}
for(int i = 1; i < M; i++)
for(int j = s[i]; ; j = (j - 1) & s[i]){
if(j & j >> 1) continue;
for(int k = s[i + 1]; ; k = (k - 1) & s[i + 1]){
if((k & k >> 1) || (j & k)) continue;
dp[i + 1][k] += dp[i][j];
if(dp[i + 1][k] >= mod) dp[i + 1][k] -= mod;
if(!k) break;
}
if(!j) break;
}
int ans = 0;
for(int i = s[M]; ; i = (i - 1) & s[M]){
if(i & i >> 1) continue;
ans += dp[M][i];
if(ans >= mod) ans -= mod;
if(!i) break;
}
printf("%d\n", ans);
return 0;
}