void main(){ import std.stdio, std.string, std.conv, std.algorithm; long n; int m; rd(n); rd(m); auto c=new long[][](m, m); foreach(i; 0..m) c[i]=readln.split.to!(long[]); auto d=new long[][][](33, m, m); foreach(k; 0..33)foreach(i; 0..m)foreach(j; 0..m){ if(k==0){ d[k][i][j]=c[i][j]; }else{ foreach(_; 0..m) chmax(d[k][i][j], d[k-1][i][_]+d[k-1][_][j]); } } long mx=0; foreach(s; 0..m){ auto dp=new long[][](33, m); if((n-1)&1)foreach(j; 0..m) dp[0][j]=d[0][s][j]; foreach(k; 1..33)foreach(j; 0..m){ if((n-1)&(1L<