窝也不知道为什么反着BFS就是对的啊QWQ
#include<cstdio>
#define ll long long
using namespace std;
const int N=2005;
int n,k,m,B[2],E[2],H,T,px[N*N],py[N*N];
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
bool M[N][N],v[N][N];
inline bool read(){
char ch=getchar();
while(ch!='0'&&ch!='1') ch=getchar();
return ch=='1';
}
inline bool solve(){
if(M[B[0]][B[1]]||M[E[0]][E[1]]) return 0;
px[H=T=1]=E[0],py[1]=E[1],v[E[0]][E[1]]=1;
for(int x,y,X,Y,K=1;K<=k;K++){
H=1;
while(H<=T){
x=px[H],y=py[H++];
for(int i=0;i<4;i++){
X=x+dx[i]*K,Y=y+dy[i]*K;
if(X>=0&&X<n&&Y>=0&&Y<m&&!v[X][Y]&&!M[X][Y]) v[X][Y]=1,px[++T]=X,py[T]=Y;
}
}
if(v[B[0]][B[1]]) return 1;
}
return 0;
}
int main(){
scanf("%d%d%d",&n,&m,&k);
scanf("%d%d%d%d",B,B+1,E,E+1);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++) M[i][j]=read();
if(solve()) puts("Possible");
else puts("Impossible");
return 0;
}