#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
const int N=998244353;
const int M1=105,M2=2005;
int n,m,mp[M1][M2],sc[M1];
long long ans;
void loading(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
cin>>mp[i][j];
}
}
void backfire(int k,int num,long long w,int p){
if(num==k){ans=(ans+w)%N; return;}
if(p>n) return;
for(int j=1;j<=m;j++)
if(mp[p][j]&&sc[j]+1<=k/2){
sc[j]++;
backfire(k,num+1,(w*mp[p][j])%N,p+1);
sc[j]--;
}
backfire(k,num,w,p+1);
}
int main(){
loading();
for(int i=2;i<=n;i++) backfire(i,0,1,1);
cout<<ans;
fclose(stdin); fclose(stdout);
return 0;
}