#include <bits/stdc++.h>
using namespace std;
template <class T>
void chmax(T& a, const T& b) {
  a = max(a, b);
}
template <class T>
void chmin(T& a, const T& b) {
  a = min(a, b);
}
template <class T>
void uniq(vector<T>& c) {
  sort(c.begin(), c.end());
  c.erase(unique(c.begin(), c.end()), c.end());
}
template <class T>
string to_s(const T& a) {
  ostringstream os;
  os << a;
  return os.str();
}
template <class T>
T to_T(const string& s) {
  istringstream is(s);
  T res;
  is >> res;
  return res;
}
template <class T, class U>
ostream& operator<<(ostream& os, pair<T, U>& p) {
  os << "( " << p.first << ", " << p.second << " )";
  return os;
}
template <class T>
void print(T a, int n, const string& deli = " ", int br = 1) {
  for (int i = 0; i < n; ++i) {
    cout << a[i];
    if (i + 1 != n) cout << deli;
  }
  while (br--) cout << endl;
}
template <class T>
void print(const T& c, const string& deli = " ", int br = 1) {
  for (__typeof__((c).begin()) it = (c).begin(); it != (c).end(); ++it) {
    cout << *it;
    if (++it != c.end()) cout << deli;
    --it;
  }
  while (br--) cout << endl;
}
template <class T>
void print2d(T a, int w, int h, int width = -1, int br = 1) {
  for (int i = 0; i < h; ++i) {
    for (int j = 0; j < w; ++j) {
      if (width != -1) cout.width(width);
      cout << a[i][j] << ' ';
    }
    cout << endl;
  }
  while (br--) cout << endl;
}
template <class T>
void input(T& a, int n) {
  for (int i = 0; i < n; ++i) cin >> a[i];
}
template <class T>
void input(T* a, int n) {
  for (int i = 0; i < n; ++i) cin >> a[i];
}
void fix_pre(int n) {
  cout.setf(ios::fixed, ios::floatfield);
  cout.precision(10);
}
void fast_io() {
  cin.tie(0);
  ios::sync_with_stdio(false);
}
bool in_rect(int x, int y, int w, int h) {
  return 0 <= x && x < w && 0 <= y && y < h;
}
const int dx[] = {0, 1, 0, -1};
const int dy[] = {1, 0, -1, 0};
const double PI = acos(-1.0);
const int mod = ((long long)(1e9)) + 7;
int main() {
  int h, w, k;
  scanf("%d%d%d", &h, &w, &k);
  static int a[1024][1024];
  for (int y = 0; y < (int)(h); ++y)
    for (int x = 0; x < (int)(w); ++x) scanf("%d", &a[y][x]);
  long long mval = -1;
  int mx, my;
  for (int y = k - 1; y <= h - k; ++y) {
    int x = k - 1;
    long long left[2048], right[2048];
    fill_n(left, 2 * k + 10, 0);
    fill_n(right, 2 * k + 10, 0);
    for (int dy = -(k - 1); dy <= k - 1; ++dy)
      for (int dx = -(k - 1); dx <= k - 1; ++dx)
        (dx < 0 ? left : right)[abs(dx) + abs(dy)] += a[y + dy][x + dx];
    for (;; ++x) {
      long long f = 0;
      for (int i = 0; i < (int)(k); ++i) f += (k - i) * (left[i] + right[i]);
      if (f > mval) mval = f, mx = x, my = y;
      if (x == w - k) break;
      for (int dy = -(k - 1); dy <= k - 1; ++dy) {
        left[abs(dy)] += a[y + dy][x];
        right[abs(dy)] -= a[y + dy][x];
        right[abs(dy) + k] += a[y + dy][x + k];
      }
      for (int i = k; i >= 0; --i) left[i + 1] = left[i];
      left[0] = 0;
      for (int i = 1; i <= 2 * k; ++i) right[i - 1] = right[i];
    }
  }
  printf("%d %d\n", my + 1, mx + 1);
}
