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

int main(){
  int n, m;
  double g[100][100];
  double dp[100][100]; //dp[i][j]:i番目までで前に肥料jを与えたときの最大の苗木長

  while(scanf("%d %d", &n, &m), n){
    for(int i = 0; i < n; i++){
      for(int j = 0; j < n; j++){
        scanf("%lf", &g[i][j]);
      }
    }

    fill_n( *dp, 100 * 100, 0.0);

    for(int i = 0; i < n; i++){
      dp[0][i] = 1.0;
    }

    for(int i = 1; i < m; i++){
      for(int j = 0; j < n; j++){
        for(int k = 0; k < n; k++){
          dp[i][k] = max( dp[i][k], dp[i - 1][j] * g[j][k]);
        }
      }
    }
    cout << fixed << setprecision(2) << *max_element( dp[m - 1], dp[m] + n) << endl;
  }
  return 0;
}