N = int(input()) M = int(input()) X = [list(map(int, input().split(' '))) for _ in range(M)] A = [[[0 for _ in range(M+1)] for _ in range(M+1)] for _ in range(M+2)] for i in range(M): for j in range(M): A[0][i][j] = X[i][j] for i in range(M+1): for x in range(M): for y in range(M): for z in range(M): A[i+1][x][y] = max(A[i+1][x][y], A[i][x][z]+A[i][z][y]) B = [[[0 for _ in range(M+1)] for _ in range(M+1)] for _ in range(M+2)] answer = 0 N = N-1 for i in range(M+1): if N & (1<