#include <bits/stdc++.h>
using namespace std;
long long input[100005][10];
void ins(vector<deque<long long> >& mx, int i, int m) {
  for (int j = (0); j < (int)(m); j++) {
    while (mx[j].size() > 0) {
      if (mx[j][mx[j].size() - 1] < input[i][j])
        mx[j].pop_back();
      else
        break;
    }
    mx[j].push_back(input[i][j]);
  }
}
long long get_maxsum(vector<deque<long long> >& mx, int m) {
  long long sum = 0;
  for (int j = (0); j < (int)(m); j++) {
    if (mx[j].size() > 0) {
      sum += mx[j][0];
    }
  }
  return sum;
}
void del(vector<deque<long long> >& mx, int i, int m) {
  for (int j = (0); j < (int)(m); j++) {
    if (mx[j].size() > 0 && mx[j][0] == input[i][j]) {
      mx[j].pop_front();
    }
  }
}
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  int mx_len = 0;
  vector<long long> ret(m, 0);
  int s = 0;
  vector<deque<long long> > mx(m, deque<long long>());
  for (int i = (0); i < (int)(n); i++) {
    for (int j = (0); j < (int)(m); j++) {
      cin >> input[i][j];
    }
    ins(mx, i, m);
    if (get_maxsum(mx, m) > k) {
      while (true) {
        del(mx, s, m);
        s++;
        if (s > i || get_maxsum(mx, m) <= k) break;
      }
    }
    if (i - s + 1 > mx_len) {
      for (int j = (0); j < (int)(m); j++) {
        ret[j] = mx[j][0];
      }
      mx_len = i - s + 1;
    }
  }
  for (int i = (0); i < (int)(m); i++) {
    if (i != 0) cout << " ";
    cout << ret[i];
  }
  cout << endl;
  return 0;
}
