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

int n , m ;
double table[110][110] ;
double memo[110][110] ;

double dp( int day , int p ){
	if( memo[day][p] != -1.0 ) return memo[day][p] ;
	if( day >= m ) return 1.0 ;
	
	double best = -100.0 ;
	for( int next=0 ; next < n ; next++ ){
		best = max( best , dp( day+1 , next ) * table[p][next] ) ;
	}
	
	return memo[day][p] = best ;
}

int main(){
	
	for( int i=0 ; i<101 ; i++ ){
		for( int j=0 ; j<101 ; j++ ){
			memo[i][j] = -1.0 ;
		}
	}
	
	while( cin >> n >> m , n ){
		for( int i=0 ; i<n ; i++ ){
			for( int j=0 ; j<n ; j++ ){
				cin >> table[i][j] ;
			}
		}
		for( int i=0 ; i<101 ; i++ ){
			for( int j=0 ; j<101 ; j++ ){
				memo[i][j] = -1.0 ;
			}
		}
		
		double ans = -100.0 ;
		for( int i=0 ; i<n ; i++ ){
			ans = max( ans , dp(1,i) ) ;
		}
		
		printf("%0.2lf\n",ans) ;
	}
	
return 0 ;
}