ll h,w,d[2000],e[]; char s[2000][2001]; bool on; void f(ll x,ll y,ll t){ rrep(u,d[y]+1,t+1){ if(s[u][y]=='.'){ d[y]=u; on=true; ll t2=min(h-1,u+1+max(0,x-u)/2); if(y>0) f(u,y-1,t2); if(y0) f(u,y+1,t2); break; } } } { rd(h,w); ll@--sx,@--sy,@--gx,@--gy; d[0..w-1]=-1; d[sy]=0; rd(s(h)); ll z=0; { on=false; if(sy>0) f(sx,sy-1,sx+1); if(sy1){ f(0,y,min(h-1,e[y-2]+1)); } if(y