#include "bits/stdc++.h" using namespace std; #define DEBUG(x) cout<<#x<<": "< #define vl vector #define vii vector< vector > #define vll vector< vector > #define vs vector #define pii pair #define pll pair #define pis pair #define psi pair const int inf = 1000000001; const ll INF = 1e16; #define MOD 1000000007 #define mod 1000000009 #define pi 3.14159265358979323846 #define Sp(p) cout< dp(36, vll(m, vl(m))); for (i = 0; i < m; i++) { for (j = 0; j < m; j++) { dp[0][i][j] = a[i][j]; } } for (i = 1; i <= 35; i++) { for (j = 0; j < m; j++) { for (k = 0; k < m; k++) { for (l = 0; l < m; l++) { dp[i][j][k] = max(dp[i][j][k], dp[i-1][j][l] + dp[i-1][l][k]); } } } } n--; ll sum = 0; vector res(36, vll(m, vl(m))); for (i = 0; i <= 35; i++) { if (n&(1LL << i)) { for (j = 0; j < m; j++) { for (k = 0; k < m; k++) { for (l = 0; l < m; l++) { if (i) { res[i][j][k] = max(res[i][j][k], res[i - 1][j][l] + dp[i][l][k]); } else { res[0][j][k] = dp[0][j][k]; } sum = max(sum, res[i][j][k]); } } } } else { for (j = 0; j < m; j++) { for (k = 0; k < m; k++) { if (i) { res[i][j][k] = res[i - 1][j][k]; } else { res[i][j][k] = 0; } } } } } printf("%lld\n", sum); }