import sys input = sys.stdin.readline def matmul(A, B): sz = len(A) res = [[0]*sz for _ in range(sz)] for i in range(sz): for j in range(sz): for k in range(sz): res[i][j] = max(res[i][j], A[i][k]+B[k][j]) return res N = int(input()) M = int(input()) A = list(list(map(int,input().split())) for _ in range(M)) D = N.bit_length() mat = [-1]*D mat[0] = A for i in range(1, D): mat[i] = matmul(mat[i-1],mat[i-1]) dp = [0]*M N -= 1 for d in reversed(range(D)): if (N>>d)&1: ndp = [0]*M for i in range(M): for j in range(M): ndp[j] = max(ndp[j], dp[i] + mat[d][i][j]) dp = ndp print(max(dp))