using System; using System.Collections.Generic; using System.Linq; using System.Collections; using System.Linq.Expressions; static class Program { static void Main() { new Magatro().Solve(); } } struct P { public string Name; public int Time; public P(string s, int time) { Name = s; Time = time; } } class Magatro { private int N; private int[][] F; private bool[] Use; private void Scan() { N = int.Parse(Console.ReadLine()); F = new int[N][]; for (int i = 0; i < N; i++) { F[i] = Console.ReadLine().Split(' ').Select(int.Parse).ToArray(); } } public int Sol() { int first = -1; for (int i = 0; i < N; i++) { if (!Use[i]) { first = i; break; } } if (first == -1) { return 0; } Use[first] = true; int max = -1; for (int second = first + 1; second < N; second++) { if (Use[second]) continue; Use[second] = true; var i = Sol() + F[first][second]; if (max < i) { max = i; } Use[second] = false; } Use[first] = false; return max; } public void Solve() { Scan(); Use = new bool[N]; Console.WriteLine(Sol()); } }