#include<bits/stdc++.h>
using namespace std;
struct node{
int x,y;
}home[1001][101];
int n,m;
node FL(int x,int y,int st){
node a;
a.x =0,a.y =0;
int nd=0;
for (int i=1;i<=n;i++){
for (int j=1;j<=m;j++){
if(home[i][j].x ==x&&home[i][j].y ==y) nd++;
if(i==x&&j==y){
nd--;
continue;
}
if(nd==st) {
a.x =i,a.y =j;
return a;
}
}
}
a.x =-1;
return a;
}
int dfs(int x,int y){
int nd=1,ans=1e8,ans1=0;
node a;
if(x==1) return 0;
while (1){
a=FL(x,y,nd);
if(a.x==-1){
break;
}
ans1=abs(x-a.x )+dfs(a.x ,a.y );
ans=min(ans,ans1);
nd++;
}
return ans;
}
int main(){
int v,x,y,ans=1e8;
cin>>n>>m>>v>>x>>y;
for (int i=1;i<=n;i++){
for (int j=1;j<=m;j++){
cin>>home[i][j].x >>home[i][j].y ;
}
}
ans=dfs(x,y);
if(ans>=1e8) cout<<"impossible";
else cout<<v*ans;
return 0;
}