#include using namespace std; using ll=long long; constexpr int MOD=998244353; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int H,W; cin>>H>>W; vector A(H,vector(W,0)); for(int i=0;i>A[i][j]; } } vector used0(H,vector(W,false)),used1=used0; vector colored(H,vector(W,0)); using a3i=array; priority_queue,greater>pq0,pq1; pq0.push({0,0,0}); used0[0][0]=1; pq1.push({0,H-1,W-1}); used1[H-1][W-1]=1; int ans=-2; int dx[]={0,1,0,-1}; int dy[]={-1,0,1,0}; auto bound_ok=[&](int x,int y){ return x>=0&&x=0&&y