#include <bits/stdc++.h>
using namespace std;



int main(){
while(true){
	int n, m;
	double g[205][205];
	double dp[205][205];
	cin >> n >> m;
	if(n == 0 && m == 0) return 0;
	std::memset(g, 0.0, sizeof(g));
	std::memset(dp, 0.0, sizeof(dp));
	for(int i = 0; i < n; i++){
		for(int j = 0; j < n; j++){
			cin >> g[j][i];
		}
	}
	for(int i = 0; i < n; i++){
		dp[1][i] = 1.0;
	}
	for(int i = 2; i <= m; i++){
		for(int j = 0; j < n; j++){
			for(int k = 0; k < n; k++){
				dp[i][j] = max(dp[i][j], dp[i - 1][k] * g[j][k]);
			}
		}
	}
	double res = 0.0;
	for(int i = 0; i < n; i++){
		res = max(res, dp[m][i]);
	}
	printf("%.2lf\n",res);
}
}

