#include<stdio.h>
#define rep(i,n) for(i=0;i<n;i++)
double max(double a,double b){return a>b?a:b;}
int main(void)
{
  int n,m,i,j,k,t;
  double mat[100][100],dp[2][100],res;
  for(;;){
    scanf("%d%d",&n,&m); if(!n)break;
    rep(i,n)rep(j,n)scanf("%lf",mat[i]+j);
    t=0;res=0;
    rep(i,n)dp[1][i]=0,dp[0][i]=1;
    rep(i,m){rep(j,n)rep(k,n)dp[t^1][j]=max(dp[t^1][j],dp[t][k]*mat[j][k]);
      t^=1;
    }
    rep(i,n)res=max(res,dp[t^1][i]);
    printf("%.2f\n",res);
  }
  return 0;
}