#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
#define N 1000010
#define mod 998244353
using namespace std;
ll n,m,ans=1;
ll h[110][2010],cnt[10010],sum[210],f[210][5010];
int main()
{
scanf("%lld%lld",&n,&m);
for(ll i=1;i<=n;++i)
{
for(ll j=1;j<=m;++j)
{
scanf("%lld",&h[i][j]);
sum[i]=(sum[i]+h[i][j])%mod;//前缀和求出每行的总数
}
ans=(ans*(sum[i]+1))%mod;//计算总方案数
}
for(int row=1;row<=m;++row)
{
memset(f,0,sizeof(0));
f[0][n]=1;//重置 为n为了防止负数下标
for(int line=1;line<=n;++line)
for(int c=n-line;c<=n+line;++c)//j<k转移到j>k 但都是基于f[0][n]开始
{
f[line][c]=((f[line-1][c]+(f[line-1][c-1]*h[line][row])%mod)%mod+f[line-1][c+1]*(sum[line]-h[line][row])%mod)%mod;
}
for(int line=n+1;line<=2*n;++line)
ans=(ans-f[n][line]+mod)%mod;//计算容斥
//!!!!取模
}
printf("%lld\n",ans-1);
return 0;
// 华丽结束
}
各位给点个赞,评个论!!!