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

typedef long long ll;
const ll MOD = 1e9+7;
const int N = 1005;
const int dirx[]={1,0,-1,0};
const int diry[]={0,1,0,-1};

struct node{
    int x,y,v;
}a[N];

int mat[N][N],n,m,vis[N][N];
queue<pair<int,pair<int,int> > >q;
bool ok(int x,int y){
    return x>0&&x<=n&&y>0&&y<=m;
}
bool cmp(const node &lhs,const node &rhs){
    return lhs.v>rhs.v;
}
int main()
{
    ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);

    int k;
    cin>>n>>m>>k;

    for(int i=1;i<=k;i++){
        cin>>a[i].x>>a[i].y>>a[i].v;
    }


    sort(a+1,a+1+n,cmp);
    for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)mat[i][j]=10000000;
    int x,y,v,posx,posy,d,ans,newx,newy,newd,vrednost;
    int prev=-1;

    for(int i=1;i<=k;i++){
        q.push({a[i].x,{a[i].y,0}});
        vis[a[i].x][a[i].y]=i;
        while(!q.empty()){
            auto p=q.front();
            q.pop();
            mat[p.first][p.second.first]=(p.second.second+a[i].v-1)/a[i].v;
            for(int j=0;j<4;j++){
                newx=p.first+dirx[j];
                newy=p.second.first+diry[j];
                vrednost=(p.second.second+a[i].v)/a[i].v;
                if(ok(newx,newy)&&vis[newx][newy]!=i&&vrednost<=mat[newx][newy]){
                    q.push({newx,{newy,p.second.second+1}});
                    vis[newx][newy]=i;
                }
            }
        }
    }
    int ans2=-1;
    int p,t;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(mat[i][j]>ans2){
                ans2=mat[i][j];
                p=i;
                t=j;
            }
        }
    }
    cout<<p<<" "<<t;
    return 0;
}
