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;
long long a[1010][1010], s2[1010][1010], s3[1010 * 2][1010], s4[1010 * 2][1010],
    l[1010][1010], r[1010][1010], u[1010][1010], d[1010][1010], f1[1010][1010],
    f2[1010][1010], f[1010][1010];
int n, m, k, M;
int cal1(int x, int y, int k) {
  if (k > y) return s2[x][y];
  return s2[x][y] - s2[x][y - k];
}
int cal2(int x, int y, int k) { return s3[x + y][x] - s3[x + y][x - k]; }
int cal3(int x, int y, int k) {
  return s4[x - y + M][x] - s4[x - y + M][x - k];
}
int cal4(int x, int y) {
  if (y < 1 && y > m) return 0;
  int t = min(y, k);
  return s2[x][y] - s2[x][y - t];
}
int cal5(int x, int y) {
  if (y < 1 && y > m) return 0;
  int t = min(m - y + 1, k);
  return s2[x][y + t - 1] - s2[x][y - 1];
}
int read() {
  char ch = getchar();
  while (ch < '0' || ch > '9') ch = getchar();
  int ans = 0;
  while (ch >= '0' && ch <= '9') ans = ans * 10 + ch - '0', ch = getchar();
  return ans;
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  M = max(n, m);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) a[i][j] = read();
  for (int i = 1; i <= n + 1; i++)
    for (int j = 0; j <= m + 1; j++) {
      s2[i][j] = s2[i][j - 1] + a[i][j];
      s3[i + j][i] = s3[i + j][i - 1] + a[i][j];
      s4[i - j + M][i] = s4[i - j + M][i - 1] + a[i][j];
    }
  for (int i = 1; i <= k; i++)
    for (int j = k; j <= m - k + 1; j++)
      u[i][j] = u[i - 1][j] + cal1(i, j + i - 1, i * 2 - 1);
  for (int i = k + 1; i <= n - k + 1; i++)
    for (int j = k; j <= m - k + 1; j++)
      u[i][j] = u[i - 1][j] - cal2(i - 1, j - k + 1, k) -
                cal3(i - 1, j + k - 1, k) + a[i - k][j] +
                cal1(i, j + k - 1, k * 2 - 1);
  for (int i = n; i >= n - k + 1; i--)
    for (int j = k; j <= m - k + 1; j++)
      d[i][j] = d[i + 1][j] + cal1(i, j + n - i, (n - i) * 2 + 1);
  for (int i = n - k; i >= k; i--)
    for (int j = k; j <= m - k + 1; j++)
      d[i][j] = d[i + 1][j] - cal2(i + k, j, k) - cal3(i + k, j, k) +
                a[i + k][j] + cal1(i, j + k - 1, k * 2 - 1);
  for (int i = k; i <= n - k + 1; i++) {
    for (int j = 1; j <= m; j++)
      l[i][j] = l[i][j - 1] - cal4(i, j - 1) + a[i][j] * k;
    for (int j = m; j; j--)
      r[i][j] = r[i][j + 1] - cal5(i, j + 1) + a[i][j] * k;
  }
  for (int j = k; j <= m - k + 1; j++)
    for (int i = 1; i <= k; i++)
      f1[k][j] +=
          (cal2(k, j - i + 1, i) + cal3(k, j + i - 1, i) - a[k - i + 1][j]) *
          (k - i + 1);
  for (int i = k + 1; i <= n - k + 1; i++)
    for (int j = k; j <= m - k + 1; j++)
      f1[i][j] = f1[i - 1][j] - u[i - 1][j] + l[i][j] + r[i][j] - a[i][j] * k;
  for (int j = k; j <= m - k + 1; j++)
    for (int i = 1; i <= k; i++)
      f2[n - k + 1][j] +=
          (cal2(n - k + 1 + i - 1, j, i) + cal3(n - k + 1 + i - 1, j, i) -
           a[n - k + 1 + i - 1][j]) *
          (k - i + 1);
  for (int i = n - k; i >= k; i--)
    for (int j = k; j <= m - k + 1; j++)
      f2[i][j] = f2[i + 1][j] - d[i + 1][j] + l[i][j] + r[i][j] - a[i][j] * k;
  for (int i = k; i <= n - k + 1; i++)
    for (int j = k; j <= m - k + 1; j++)
      f[i][j] = f1[i][j] + f2[i][j] - l[i][j] - r[i][j] + a[i][j] * k;
  int x = k, y = k;
  for (int i = k; i <= n - k + 1; i++)
    for (int j = k; j <= m - k + 1; j++)
      if (f[i][j] > f[x][y]) x = i, y = j;
  cout << x << " " << y << endl;
  return 0;
}