#include <bits/stdc++.h>
using namespace std;
const int N = (int)1e5 + 5;
int n, m;
long long k;
int best[5], arr[N][5];
multiset<int> cur[5];
int main() {
  cin >> n >> m >> k;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) scanf("%d", &arr[i][j]);
  for (int i = 0; i < m; i++) cur[i].insert(0);
  int ret = 0;
  for (int i = 0, j = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      k += *cur[j].rbegin();
      cur[j].insert(arr[i][j]);
      k -= *cur[j].rbegin();
    }
    while (j <= i && k < 0) {
      for (int f = 0; f < m; f++) {
        int val = arr[j][f];
        cur[f].erase(cur[f].find(val));
        int mx = *cur[f].rbegin();
        if (mx <= val) k += val - mx;
      }
      j++;
    }
    if (k >= 0) {
      if (i - j + 1 > ret) {
        ret = i - j + 1;
        for (int f = 0; f < m; f++) best[f] = *cur[f].rbegin();
      }
    }
  }
  for (int i = 0; i < m; i++) cout << best[i] << " ";
  return 0;
}
