#include <iostream>
#include <string>
#include <vector>
using namespace std;

double tbl[100][100]; // iの後にjを与えたときの成長度

int main() {
    int n, m;
    while (cin >> n >> m, (n || m)) {
        for (int i=0; i<n; ++i) {
            for (int j=0; j<n; ++j) {
                cin >> tbl[i][j];
            }
        }
        double dp[101][100] = {}; // i回目にjを与えたときの最大サイズ
        for (int i=0; i<100; ++i) {
            dp[1][i] = 1.0;
        }
        for (int t=2; t<=m; ++t) {
            for (int i=0; i<n; ++i) {
                for (int j=0; j<n; ++j) {
                    dp[t][i] = max(dp[t][i], dp[t-1][j] * tbl[j][i]);
                }
            }
        }
        double res = -1e8;
        for (int i=0; i<n; ++i) {
            res = max(res, dp[m][i]);
        }
        cout.precision(2);
        cout << fixed << res << endl;
    }
    return 0;
}