1 #include <stdio.h> 2 #include <algorithm> 3 #include <string.h> 4 #include <iostream> 5 using namespace std; 6 typedef long long ll; 7 8 inline int read() 9 { 10 int x=0,f=1;char ch=getchar(); 11 while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} 12 while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} 13 return x*f; 14 } 15 16 /********************************************************************/ 17 18 const int mod = 100000000; 19 const int maxn = 15; 20 int n, m; 21 int dp[13][(1<<13)+5]; 22 int a[maxn]; 23 24 int line(int x, int y){ 25 if((a[x]&y) != y) return 0; 26 if((y&(y<<1)) != 0) return 0; 27 return 1; 28 } 29 30 int main(){ 31 int n,m; 32 while(~scanf("%d%d",&n,&m)){ 33 for(int i=1;i<=n;i++){ 34 a[i]=0; 35 for(int j=1;j<=m;j++){ 36 int t; 37 scanf("%d",&t); 38 a[i]=(a[i]<<1)+t; 39 } 40 } 41 memset(dp,0,sizeof(dp)); 42 dp[0][0] = 1; 43 for(int i = 1;i <= n;i++){ 44 for(int j=0;j<(1<<m);j++){ 45 if(line(i,j)==0)continue; 46 for(int k=0;k<(1<<m);k++){ 47 if((j&k)==0){ 48 dp[i][j]=dp[i][j]+dp[i-1][k]; 49 dp[i][j]%=mod; 50 } 51 } 52 } 53 } 54 int ans = 0; 55 for(int i = 0;i < (1<<m);i++){ 56 ans= (ans + dp[n][i] )%mod; 57 } 58 printf("%d\n",ans); 59 } 60 }