#include <bits/stdc++.h>
using namespace std;

long long value(int r, int c);

long long a[510][510];

std::pair<int, int> find_locmin_point(int n, int m) {
    if (n == 1) {
        int l = 1, r = m;
        a[1][1] = value(1, 1);
        if (m == 1) return make_pair(1, 1);
        a[1][2] = value(1, 2);
        if (m == 2) {
            if (a[1][1] < a[1][2]) return make_pair(1, 1);
            else return make_pair(1, 2);
        }
        if (a[1][1] < a[1][2]) return make_pair(1, 1);
        a[1][r] = value(1, r);
        if (m == 3) {
            if (a[1][2] < a[1][3]) return make_pair(1, 2);
            else return make_pair(1, 3);
        }
        a[1][r - 1] = value(1, r - 1);
        if (a[1][r] < a[1][r - 1]) return make_pair(1, r);
        if (m == 4) {
            if (a[1][2] < a[1][3]) return make_pair(1, 2);
            else return make_pair(1, 3);
        }
        l = 2; r = m - 1;
        while (l < r) {
            int mid = (l + r) / 2;
            if (a[1][mid] == 0) a[1][mid] = value(1, mid);
            if (a[1][mid + 1] == 0) a[1][mid + 1] = value(1, mid + 1);
            if (a[1][mid] > a[1][mid + 1]) l = mid + 1;
            else r = mid;
        }
        return make_pair(1, r);
    }

    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            a[i][j] = value(i, j);
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            bool flag = 1;
            if (i > 1 && a[i - 1][j] < a[i][j]) flag = 0;
            if (i < n && a[i + 1][j] < a[i][j]) flag = 0;
            if (j > 1 && a[i][j - 1] < a[i][j]) flag = 0;
            if (j < m && a[i][j + 1] < a[i][j]) flag = 0;
            if (flag) return make_pair(i, j);
        }
    }
}
