#include <bits/stdc++.h>
#define FOR(i,a,b) for(int i=(a),_b=(b); i<=_b; ++i)
#define fi first
#define se second
#define el "\n"
#define pb push_back
#define sz(x) (int)(x).size()
#define FILL(a,v) memset(a,v,sizeof(a))
using namespace std;
typedef long long ll; typedef pair<int,int> ii;
const int N = 1000003;
const int MOD = 998244353;
int addmod(int a,int b){ a+=b; if(a>=MOD) a-=MOD; return a; }
int mulmod(ll a,ll b){ return (int)((a*b)%MOD); }
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
freopen("sumpath.inp","r",stdin);
freopen("sumpath.out","w",stdout);
int m, n;
cin >> m >> n;
vector<string> g(m);
for(int i=0;i<m;++i) cin>>g[i];
vector<vector<int>> d(m, vector<int>(n,0));
d[0][0]=1;
for(int i=0;i<m;++i){
for(int j=0;j<n;++j){
if(i||j){
int v=0;
if(i) v=addmod(v,d[i-1][j]);
if(j) v=addmod(v,d[i][j-1]);
if(i&&j) v=addmod(v,d[i-1][j-1]);
d[i][j]=v;
}
}
}
int ans=0;
for(int i=0;i<m;++i){
for(int j=0;j<n;++j){
int dig = g[i][j]-'0';
int ways = mulmod(d[i][j], d[m-1-i][n-1-j]);
ans = addmod(ans, mulmod(dig, ways));
}
}
cout<<ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRk9SKGksYSxiKSBmb3IoaW50IGk9KGEpLF9iPShiKTsgaTw9X2I7ICsraSkKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGVsICJcbiIKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBzeih4KSAoaW50KSh4KS5zaXplKCkKI2RlZmluZSBGSUxMKGEsdikgbWVtc2V0KGEsdixzaXplb2YoYSkpCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOyB0eXBlZGVmIHBhaXI8aW50LGludD4gaWk7CmNvbnN0IGludCBOID0gMTAwMDAwMzsKY29uc3QgaW50IE1PRCA9IDk5ODI0NDM1MzsKCmludCBhZGRtb2QoaW50IGEsaW50IGIpeyBhKz1iOyBpZihhPj1NT0QpIGEtPU1PRDsgcmV0dXJuIGE7IH0KaW50IG11bG1vZChsbCBhLGxsIGIpeyByZXR1cm4gKGludCkoKGEqYiklTU9EKTsgfQoKaW50IG1haW4oKXsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7IGNvdXQudGllKG51bGxwdHIpOwogICAgZnJlb3Blbigic3VtcGF0aC5pbnAiLCJyIixzdGRpbik7CiAgICBmcmVvcGVuKCJzdW1wYXRoLm91dCIsInciLHN0ZG91dCk7CiAgICBpbnQgbSwgbjsKICAgIGNpbiA+PiBtID4+IG47CiAgICB2ZWN0b3I8c3RyaW5nPiBnKG0pOwogICAgZm9yKGludCBpPTA7aTxtOysraSkgY2luPj5nW2ldOwogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBkKG0sIHZlY3RvcjxpbnQ+KG4sMCkpOwogICAgZFswXVswXT0xOwogICAgZm9yKGludCBpPTA7aTxtOysraSl7CiAgICAgICAgZm9yKGludCBqPTA7ajxuOysrail7CiAgICAgICAgICAgIGlmKGl8fGopewogICAgICAgICAgICAgICAgaW50IHY9MDsKICAgICAgICAgICAgICAgIGlmKGkpIHY9YWRkbW9kKHYsZFtpLTFdW2pdKTsKICAgICAgICAgICAgICAgIGlmKGopIHY9YWRkbW9kKHYsZFtpXVtqLTFdKTsKICAgICAgICAgICAgICAgIGlmKGkmJmopIHY9YWRkbW9kKHYsZFtpLTFdW2otMV0pOwogICAgICAgICAgICAgICAgZFtpXVtqXT12OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaW50IGFucz0wOwogICAgZm9yKGludCBpPTA7aTxtOysraSl7CiAgICAgICAgZm9yKGludCBqPTA7ajxuOysrail7CiAgICAgICAgICAgIGludCBkaWcgPSBnW2ldW2pdLScwJzsKICAgICAgICAgICAgaW50IHdheXMgPSBtdWxtb2QoZFtpXVtqXSwgZFttLTEtaV1bbi0xLWpdKTsKICAgICAgICAgICAgYW5zID0gYWRkbW9kKGFucywgbXVsbW9kKGRpZywgd2F5cykpOwogICAgICAgIH0KICAgIH0KICAgIGNvdXQ8PGFuczsKICAgIHJldHVybiAwOwp9Cg==