#include<algorithm>
#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n,m,map[101][101],u,v,mark[101][101];
cin>>n>>m;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
cin>>map[i][j];//存下魔法数
int head=1,tail=1,q[2][101],dis[101][101];//
memset(dis,-1,sizeof(dis));memset(mark,-1,sizeof(mark));
dis[1][1]=0;
q[0][head]=1;q[1][head]=1;
int dx[8]={0,1,1,1,0,-1,-1,-1},dy[8]={-1,-1,0,1,1,1,0,-1};
while(head<=tail)
{
u=q[0][head];v=q[1][head];
head++;
for(int i=0;i<=7;i++)
{
if(i==mark[u][v]) continue;//判断是否与来时方向相同
int nx=u+dx[i]*map[v][u],ny=v+dy[i]*map[v][u];
if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&dis[nx][ny]==-1)
{
dis[nx][ny]=dis[u][v]+1;
mark[nx][ny]=i;
tail++;
q[0][tail]=nx;q[1][tail]=ny;
}
if(nx==n&&ny==m)//到终点了
{
head+=tail;
break;
}
}
}
/*for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
cout<<dis[j][i]<<" ";*/
if(dis[n][m]==-1) cout<<"NEVER";
else cout<<dis[n][m];
return 0;
}