Problem: You've got a table of size n × m. On the intersection of the i-th row (1 ≤ i ≤ n) and the j-th column (1 ≤ j ≤ m) there is a non-negative integer ai, j. Besides, you've got a non-negative integer k.

Your task is to find such pair of integers (a, b) that meets these conditions: 

  * k ≤ a ≤ n - k + 1; 
  * k ≤ b ≤ m - k + 1; 
  * let's denote the maximum of the function <image> among all integers x and y, that satisfy the inequalities k ≤ x ≤ n - k + 1 and k ≤ y ≤ m - k + 1, as mval; for the required pair of numbers the following equation must hold f(a, b) = mval. 

Input

The first line contains three space-separated integers n, m and k (1 ≤ n, m ≤ 1000, <image>). Next n lines each contains m integers: the j-th number on the i-th line equals ai, j (0 ≤ ai, j ≤ 106).

The numbers in the lines are separated by spaces.

Output

Print the required pair of integers a and b. Separate the numbers by a space.

If there are multiple correct answers, you are allowed to print any of them.

Examples

Input

4 4 2
1 2 3 4
1 1 1 1
2 2 2 2
4 3 2 1


Output

3 2


Input

5 7 3
8 2 3 4 2 3 3
3 4 6 2 3 4 6
8 7 6 8 4 5 7
1 2 3 2 1 3 2
4 5 3 2 1 2 1


Output

3 3

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
int n, m, k, mx, my, x, y;
long long s[2222][2222], f[1111][1111], t[1111][1111], ans, di1[1111][1111],
    di2[1111][1111], di3[1111][1111], di4[1111][1111], a[2222][2222],
    b[1111][1111];
long long make() {
  long long ans = 0;
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j)
      ans += b[i][j] * max(0, k - abs(i - k) - abs(j - k));
  return ans;
}
long long di1make() {
  long long ans = 0;
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= k; ++j)
      if (abs(i - k) + abs(j - k) < k) ans += b[i][j];
  return ans;
}
long long di2make() {
  long long ans = 0;
  for (int i = 1; i <= n; ++i)
    for (int j = k; j <= m; ++j)
      if (abs(i - k) + abs(j - k) < k) ans += b[i][j];
  return ans;
}
long long di3make() {
  long long ans = 0;
  for (int i = 1; i <= k; ++i)
    for (int j = 1; j <= m; ++j)
      if (abs(i - k) + abs(j - k) < k) ans += b[i][j];
  return ans;
}
long long di4make() {
  long long ans = 0;
  for (int i = k; i <= n; ++i)
    for (int j = 1; j <= m; ++j)
      if (abs(i - k) + abs(j - k) < k) ans += b[i][j];
  return ans;
}
long long recalc(int x1, int y1, int x2, int y2) {
  x1--;
  y1--;
  return t[x2][y2] - t[x2][y1] - t[x1][y2] + t[x1][y1];
}
long long calc(int tx1, int ty1, int tx2, int ty2) {
  int x1 = tx1 + ty1 - 1, x2 = tx2 + ty2, y1 = 1111 + ty1 - tx1 - 1,
      y2 = 1111 + ty2 - tx2;
  return s[x2][y2] - s[x2][y1] - s[x1][y2] + s[x1][y1];
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j) {
      scanf("%d", &x);
      b[i][j] = x;
      a[i + j][j - i + 1111] = x;
      t[i][j] = t[i - 1][j] + t[i][j - 1] + x - t[i - 1][j - 1];
    }
  for (int i = 2; i <= n + m; ++i)
    for (int j = 1111 - n + 1; j <= 1111 + m - 1; ++j)
      s[i][j] = a[i][j] + s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1];
  for (int i = k; i <= n - k + 1; ++i)
    for (int j = k; j <= m - k + 1; ++j) {
      if (i == k && j == k) {
        ans = make();
        f[i][j] = ans;
        mx = k;
        my = k;
        di1[i][j] = di1make();
        di2[i][j] = di2make();
        di3[i][j] = di3make();
        di4[i][j] = di4make();
      } else if (j == k) {
        di1[i][j] = di1[i - 1][j] + calc(i, j - k + 1, i + k - 1, j) -
                    calc(i - 1, j - k + 1, i - k, j);
        di2[i][j] = di2[i - 1][j] - calc(i - k, j, i - 1, j + k - 1) +
                    calc(i + k - 1, j, i, j + k - 1);
        di3[i][j] = di3[i - 1][j] + recalc(i, j - k + 1, i, j + k - 1) -
                    calc(i - 1, j - k + 1, i - k, j) -
                    calc(i - k, j, i - 1, j + k - 1) + b[i - k][j];
        di4[i][j] = di4[i - 1][j] - recalc(i - 1, j - k + 1, i - 1, j + k - 1) +
                    calc(i, j - k + 1, i + k - 1, j) +
                    calc(i + k - 1, j, i, j + k - 1) - b[i + k - 1][j];
        f[i][j] = f[i - 1][j] - di3[i - 1][j] + di4[i][j];
        if (f[i][j] > ans) {
          mx = i;
          my = j;
          ans = f[i][j];
        }
      } else {
        di1[i][j] = di1[i][j - 1] + recalc(i - k + 1, j, i + k - 1, j) -
                    calc(i, j - k, i - k + 1, j - 1) -
                    calc(i, j - k, i + k - 1, j - 1) + b[i][j - k];
        di2[i][j] = di2[i][j - 1] + calc(i - k + 1, j, i, j + k - 1) +
                    calc(i + k - 1, j, i, j + k - 1) - b[i][j + k - 1] -
                    recalc(i - k + 1, j - 1, i + k - 1, j - 1);
        di3[i][j] = di3[i][j - 1] + calc(i - k + 1, j, i, j + k - 1) -
                    calc(i, j - k, i - k + 1, j - 1);
        di4[i][j] = di4[i][j - 1] + calc(i + k - 1, j, i, j + k - 1) -
                    calc(i, j - k, i + k - 1, j - 1);
        f[i][j] = f[i][j - 1] - di1[i][j - 1] + di2[i][j];
        if (f[i][j] > ans) {
          mx = i;
          my = j;
          ans = f[i][j];
        }
      }
    }
  printf("%d %d\n", mx, my);
  return 0;
}