#include "locmin.h"
#include <map>
using namespace std;

map<pair<int,int>, long long> mp;

long long val(int r,int c){
    if(mp.count({r,c})) return mp[{r,c}];
    return mp[{r,c}] = value(r,c);
}

pair<int,int> rec(int n,int m,int g,int d){
    int mid=(g+d)/2;
    int br=1;
    long long bv=val(1,mid);
    for(int i=2;i<=n;i++){
        long long v=val(i,mid);
        if(v<bv){bv=v;br=i;}
    }
    long long vg,vd;
    if(mid>1) vg=val(br,mid-1);
    else vg=1e18;
    if(mid<m) vd=val(br,mid+1);
    else vd=1e18;
    if(bv<vg && bv<vd) return {br,mid};
    if(vg<bv) return rec(n,m,g,mid-1);
    return rec(n,m,mid+1,d);
}

std::pair<int,int> find_locmin_point(int N,int M){
    return rec(N,M,1,M);
}