#include #define int long long #define double long double using namespace std; const int N=500010; const int mod=1e9+7; const int INF=0x3f3f3f3f3f3f3f3f; const int dx[]={-1,0,1,0}; const int dy[]={0,-1,0,1}; // const int mod=1e9+7; namespace Matrix{ typedef vector > Mat; Mat init(int n,double c){return Mat(n,vector(n,c));} void print(Mat a){ cerr<<"---------------------------\n"; for(auto x:a){ for(auto y:x)cerr<>=1; } return z; } } using namespace Matrix; int n,m,k; char ch[110][110]; int sx,sy,tx,ty; int dot(int x,int y){ return x*m+y; } signed main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>m>>k; cin>>sx>>sy>>tx>>ty; for(int i=0;i>ch[i][j]; Mat a,b; a=init(n*m,0.0); b=init(n*m,0.0); a[dot(sx,sy)][0]=1.0; for(int i=0;i=n||ny<0||ny>=m||ch[nx][ny]=='#')continue; cnt++; } if(cnt==0)b[dot(i,j)][dot(i,j)]=1.0; else{ for(int k=0;k<4;k++){ int nx=i+dx[k]; int ny=j+dy[k]; if(nx<0||nx>=n||ny<0||ny>=m||ch[nx][ny]=='#')continue; b[dot(nx,ny)][dot(i,j)]=1.0/(double)cnt; } } } } // print(b); b=b^k; Mat ans=b*a; cout<