#include #include using namespace std; using namespace atcoder; typedef long long int ll; typedef long double ld; typedef vector vi; typedef vector vvi; typedef vector vvvi; typedef vector vvvvi; typedef pair pi; typedef pair ppi; typedef pair pppi; typedef pair ppppi; #define FOR(i,l,r) for(ll i=l;i=l;i--) #define RREP(i,n) RFOR(i,0,n) #define ALL(x) x.begin(),x.end() #define F first #define S second #define BS(A,x) binary_search(ALL(A),x) #define LB(A,x) (ll)(lower_bound(ALL(A),x)-A.begin()) #define UB(A,x) (ll)(upper_bound(ALL(A),x)-A.begin()) #define COU(A,x) (UB(A,x)-LB(A,x)) #define sz(c) ((ll)(c).size()) #include namespace mp=boost::multiprecision; using Bint=mp::cpp_int; templateusing min_priority_queue=priority_queue,greater>; templateostream&operator<<(ostream&os,pair&p){os<istream&operator>>(istream&is,pair&p){is>>p.F>>p.S;return is;} templateostream&operator<<(ostream&os,vector&v){REP(i,sz(v))os<istream&operator>>(istream&is,vector&v){for(T&in:v)is>>in;return is;} templatebool chmax(T&a,T b){if(abool chmin(T&a,T b){if(b vm; typedef vector vvm; typedef vector vvvm; typedef vector vvvvm; ostream&operator<<(ostream&os,mint&a){os<>H>>W; vvi A(H,vi(W));cin>>A; vectorB; REP(i,H)REP(j,W)B.emplace_back(ppi(A[i][j],pi(i,j))); sort(ALL(B)); reverse(ALL(B)); mint ans=0; mint t=pow_mod(2,H+W-1,mod); vector>T(H,vector(W)); REP(i,H*W){ ll x=B[i].S.F,y=B[i].S.S; bool ok=1; REP(a,H)if(T[a][y])REP(b,W)if(T[x][b]&&T[a][b])ok=0; if(ok){ t*=(mod+1)/2; ans+=A[x][y]*t; } T[x][y]=1; } cout<