#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0; i < (int)(n); i++)
using namespace std;

double dp[2][111];
double g[111][111];

int main(){
    int n,m;
    while(cin >> n >> m && n){
        rep(i,n)rep(j,n) cin >> g[i][j];
        rep(i,111) dp[0][i] = 1;
        rep(i,111) dp[1][i] = 0;
        m--;
        rep(i,m){
            auto cur = dp[i&1], nx = dp[(i&1)^1];
            rep(i,111) nx[i] = 0;
            rep(i,n){ // cur
                rep(j,n){ // use
                    nx[j] = max(nx[j], cur[i]*g[i][j]);
                }
            }
            // rep(i,m) cout << nx[i] << " ";
            // cout << endl;
        }
        double ans = 0;
        rep(i,111) ans = max(ans, dp[m&1][i]);
        // ans *= 100;
        // int d = (int)(ans)%10;
        // ans = floor(ans);
        // if(d >= 5) ans += 1;
        // ans /= 100;
        printf("%.2lf\n", ans);
    }
}