#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;

int main(void){
	double dp[100][100];	// [回数][種類]
	double table[100][100];
	int N, T;

	while(true){
		cin >> T >> N;
		if( T == 0 && N == 0)
			break;
		for(int bef=0; bef<T; bef++)
			for(int cur=0; cur<T; cur++)
				cin >> table[bef][cur];

		// init
		for(int n=0; n<N; n++)
			for(int t=0; t<T; t++)
				dp[n][t] = n == 0 ? 1 : 0;
		
		// calc
		for(int n=0; n<N-1; n++){
			for(int tcur=0; tcur<T; tcur++){
				for(int taft=0; taft<T; taft++){
					dp[n+1][taft] = max(dp[n+1][taft], dp[n][tcur]*table[tcur][taft]);
				}
			}
		}

		double res = 0;
		for(int t=0; t<T; t++)
			res = max(dp[N-1][t], res);

		res = res * pow((double)10, 2);
		res = (double)(int)(res + 0.5);
		res = res * pow((double)10, -2);


		printf("%.2f\n", res);
	}
}