import sys 

sys.stdin=open("input.txt" , "r")

dirs = ([0,0],[-1,0],[1,0],[0,-1],[0,1])

def move_shark():
    global N, K
    new_shark ={}
    for s in shark:
        pos = shark[s]

        dir= comm[s][sDir[s]]

        for d in dir:
            nPos = [pos[0]+dirs[d][0], pos[1]+dirs[d][1]]

            if 0<=nPos[0]<N and 0<=nPos[1]<N and smell[nPos[0]][nPos[1]]==0:
                if smell_state[nPos[0]][nPos[1]]==0:
                    # smell[nPos[0]][nPos[1]] =s
                    smell_state[nPos[0]][nPos[1]] =K+1
                    # new_shark[s]=[nPos[0], nPos[1]]
                    new_shark[s]=[nPos[0], nPos[1]]
                    sDir[s]=d
                    break
                elif smell_state[nPos[0]][nPos[1]]==K+1:
                    if smell[nPos[0]][nPos[1]]>s:
                        print("test")
                        print(smell[nPos[0]][nPos[1]])
                        del(new_shark[smell[nPos[0]][nPos[1]]])
                        # smell[nPos[0]][nPos[1]] =s
                        smell_state[nPos[0]][nPos[1]] =K+1
                        # new_shark[s]=[nPos[0], nPos[1]]
                        new_shark[s]=[nPos[0], nPos[1]]
                    break
        else:
            for d in dir:
                nPos = [pos[0]+dirs[d][0], pos[1]+dirs[d][1]]
                if 0<=nPos[0]<N and 0<=nPos[1]<N and smell[nPos[0]][nPos[1]]==s:
                    # smell[nPos[0]][nPos[1]] =s
                    smell_state[nPos[0]][nPos[1]] =K+1
                    new_shark[s]=[nPos[0], nPos[1]]
                    sDir[s]=d
                    break
    return new_shark

if __name__=="__main__":
    N,M,K = map(int, input().split())
    shark ={}
    smell = [[0]*N for _ in range(N)]
    smell_state = [[0]*N for _ in range(N)]
    for i in range(N):
        A = list(map(int, input().split()))
        for j in range(len(A)):
            if A[j] !=0:
                shark[A[j]]=[i,j]
                smell[i][j]=A[j]
                smell_state[i][j]=K
    
    # print(*smell, sep='\n')
    # print()
    # print(*smell_state, sep='\n')
    sDir =[0]
    sDir += list(map(int,input().split()))
    # print("sDir")
    # print(sDir)

    comm = [[0]*5 for _ in range(M+1)]
    for i in range(1,M+1):
        for j in range(1, 5):
            comm[i][j]=list(map(int, input().split()))

    print(*comm, sep='\n')
    ans =0
    while True:
        ans+=1
        shark =move_shark()
        if len(shark) ==1:
            break
        
        if ans ==1000:
            ans=-1
            break

        for s in shark:
            pos = shark[s]
            smell[pos[0]][pos[1]]=s

        for i in range(N):
            for j in range(N):
                if smell_state[i][j]>0:
                    if smell_state[i][j]==1:
                        smell[i][j]=0
                    smell_state[i][j]-=1
        

    print(ans)














