#include "code.h"
#include <bits/stdc++.h>
#define MAX_N 1005
#define INF 1000000001
using namespace std;
int Pitaj(int i, int j);

int H[MAX_N][MAX_N];
int pitaj(int i, int j){
    if(H[i][j]==-1)H[i][j]=Pitaj(i+1, j+1);
    return H[i][j];
}
int N;
int maxR[MAX_N], minC[MAX_N];//index maksimalnog elementa u redu ili minimalnog u koloni
int findR(int row){
    int maxi=0, argmax=-1;
    for(int i=0; i<N; ++i){//printf("pritaj=%d\n", pitaj(row, i));
        if(pitaj(row, i)>maxi){
                //printf("update i=%d\n", i);
            maxi=pitaj(row, i);
            argmax=i;
        }
        else if(pitaj(row, i)==maxi)argmax=-1;
    }//printf("findrow(%d)=%d\n", row, argmax);
    return argmax;
}

int findC(int col){
    int mini=INF, argmax=-1;
    for(int i=0; i<N; ++i){
        if(pitaj(i, col)<mini){
            mini=pitaj(i, col);
            argmax=i;
        }
        else if(pitaj(i, col)==mini)argmax=-1;
    }//printf("findcol(%d)=%d\n", col, argmax);
    return argmax;
}

vector<int> vct(int x, int y){
    vector<int>a;
    a.push_back(x+1);
    a.push_back(y+1);
    return a;
}
vector<int> Nadji(int n, int K)
{
    memset(H, -1, sizeof(H));
    N=n;
	for(int i=0; i<N; ++i){
        for(int j=0; j<N; ++j){
            pitaj(i, j);
        }
	}
	for(int i=0; i<N; ++i){
        minC[i]=findC(i);
        maxR[i]=findR(i);
        //printf("minC[%d]=%d, maxR[%d]=%d\n", i, minC[i], i, maxR[i]);
	}

	for(int i=0; i<N; ++i){
        for(int j=0; j<N; ++j){
            if(minC[i]==j && maxR[j]==i){
                return vct(i, j);
            }
        }
	}
	return vct(-1, -1);
}