蒟蒻代码在线求调教@Crsuh2er0
#include<bits/stdc++.h>
using namespace std;
const int mod=1e8;
const int N=1e6+10;
int g[N];
int s[N];
int f[5500][5500];
int cnt;
int n,m;
inline int read(){
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9') {if(ch=='-')f=-1; ch=getchar();}
while (ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0'; ch=getchar();}
return x*f;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int i=1;i<=m;i++){
int x;
cin>>x;
g[i]=(g[i]<<1)+x;
}
for(int i=0;i<(1<<m);i++){
if(!(i&i>>1)){
s[cnt++]=i;
}
}
f[0][0]=1;
for(int i=1;i<=n+1;i++)
for(int a=0;a<cnt;a++)
for(int b=0;b<cnt;b++)
if(!(s[a]&s[b])&&(s[a]&g[i]==s[a]))
f[i][a]=(f[i][a]+f[i-1][b])%mod;
cout<<f[n+1][0];
return 0;
}