using System; using System.Linq; using System.Collections.Generic; namespace Algorithm { class Program { static int N, M, K; static int[][] A; static void Main(string[] args) { var l = Console.ReadLine().Split().Select(int.Parse).ToArray(); N = l[0]; M = l[1]; K = l[2]; A = new int[N][]; for (var i = 0; i < N; i++) A[i] = Console.ReadLine().Split().Select(int.Parse).ToArray(); var sumList = new List(); for (var i = 0; i < M; i++) { var sum = 0; for (var j = 0; j < N; j++) { sum += A[j][i]; } sumList.Add(sum); } var targetIndex = -1; for (var i = sumList.Count - 1; i >= 0; i--) { if (sumList[i] <= K) targetIndex = i; } if (targetIndex == -1) { Console.WriteLine(-1); return; } M = targetIndex; var ans = Dfs(0, 0); Console.WriteLine(ans == 0 ? -1 : K - ans); } static int Dfs(int n, int total) { if (n == N) { if (total <= K) return total; else return -1; } var max = 0; for (var i = M; i < M + 2; i++) { max = Math.Max(max, Dfs(n + 1, total + A[n][i])); } return max; } } }