#include <iostream>
#include <algorithm>
#include <cassert>
#include <cctype>
#include <complex>
#include <cstdio>
#include <map>
#include <math.h>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
using namespace std;

#define rep(i,n) for(int i=0;i<n;i++)

int n,m;
double g[100][100],dp[2][100],M;

int main(){
	while(cin>>n>>m&&m){
		rep(i,n)rep(j,n)cin>>g[i][j];
		rep(i,m){
			rep(j,n){
				if(!i)dp[1][j]=1;
				else{
					M=0;
					rep(k,n)M=max(M,dp[0][k]*g[k][j]);
					dp[1][j]=M;
				}
			}
			rep(j,n)dp[0][j]=dp[1][j];
			//rep(j,n)cout<<dp[0][j]<<(j<n-1?" ":"\n");
		}
		M=0;
		rep(i,n)M=max(M,dp[0][i]);
		printf("%.2f\n",M);
	}
}