#include<bits/stdc++.h>
using namespace std;
long long int p,m,n,A[50][50],B[50][50],vis[50][50],js,jg,s=1e9,sw=0,g,wg,a,b,c,d,stp,pd;
struct u{
int h,z;
};
u D[10];
map<long long int,long long int> mp;
void dfs(int x,int y){
if(vis[x][y]==1 || A[x][y]==5 || js>s || js>p || x<1 || x>n || y<1 || y>m || js>B[x][y] || stp>15) return;
B[x][y]=js;
if(A[x][y]==4){
if(js==s){
if(!mp[pd]) sw++;
if(jg==g){
if(!mp[pd]) wg++;
}
if(jg>g){
g=jg,wg=stp;
}
}
else{
s=js,sw=1,g=jg,wg=1;
}
mp[pd]=1;
return;
}
vis[x][y]=1;
stp++;
if(A[x][y]==2 || A[x][y]==1){
js+=A[x][y];
jg+=A[x][y]-1;
pd+=x*x*(x%y+7)+y*y*y/(37-x)*jg+x^y*x*js;
}
if(a<c){
for(int i=1;i<=8;i++){
dfs(x+D[i].h,y+D[i].z);
}
}
else{
for(int i=8;i>=1;i--){
dfs(x+D[i].h,y+D[i].z);
}
}
if(A[x][y]==2 || A[x][y]==1){
js-=A[x][y];
jg-=A[x][y]-1;
pd-=x*x*(x%y+7)+y*y*y/(37-x)*jg+x^y*x*js;
}
vis[x][y]=0;
stp--;
}
int main(){
D[1]={1,2},D[2]={1,-2},D[3]={-1,2},D[4]={-1,-2},D[5]={2,1},D[6]={2,-1},D[7]={-2,1},D[8]={-2,-1},
cin>>p>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
B[i][j]=1e9;
cin>>A[i][j];
if(A[i][j]==0) A[i][j]=1;
else if(A[i][j]==1) A[i][j]=0;
else if(A[i][j]==5) A[i][j]=2;
else if(A[i][j]==2) A[i][j]=5;
else if(A[i][j]==3) a=i,b=j;
else if(A[i][j]==4) c=i,d=j;
else continue;
}
}
dfs(a,b);
if(sw==0) cout<<"-1";
else{
cout<<s<<" "<<sw<<endl;
if(g==0) cout<<"-1";
else cout<<g<<" "<<wg;
}
return 0;
}