#include<bits/stdc++.h>
#define F first 
#define S second
using namespace std; 
int T[501][501];
bool odw[501][501];
int n,w;

void dfs(int x,int y,int kary){
    odw[x][y]=1;
    if(0<=x-1&&odw[x-1][y]==0){
        if(T[x-1][y]<w)    dfs(x-1,y,kary);
        else if(kary>0)    dfs(x-1,y,kary-1);
    }
    if(x+1<n&&odw[x+1][y]==0){
        if(T[x+1][y]<w)   dfs(x+1,y,kary);
        else if(kary>0)   dfs(x+1,y,kary-1);
    }
    if(0<=y-1&&odw[x][y-1]==0){
        if(T[x][y-1]<w)    dfs(x,y-1,kary);
        else if(kary>0)    dfs(x,y-1,kary-1);
    }
    if(y+1<n&&odw[x][y+1]==0){
        if(T[x][y+1]<w)    dfs(x,y+1,kary);
        else if(kary>0)    dfs(x,y+1,kary-1);
    }
}

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
    int a,b,c,d,kary;
    int p=-1,k=0,sr;
    cin>>n>>kary>>a>>b>>c>>d;
    a--; b--; c--; d--;
    if(abs(a-c)+abs(b-d)<kary){
    	cout<<"TRIV";
    	return 0;
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cin>>T[i][j];
            if(k<T[i][j]) k=T[i][j];
        }
    }
    if(a==c&&b==d){
    	cout<<T[a][b];
    	return 0;
    }
    k++;
    while(k-p>1){
        w=(p+k)/2;
        for(int i=0;i<n;i++)    for(int j=0;j<n;j++)    odw[i][j]=0;
        if(T[a][b]>=w) dfs(a,b,kary-1);
        else dfs(a,b,kary);
        if(odw[c][d]==1)     k=w;
        else    p=w;
    }
    cout<<p;
}