#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define mp make_pair
#define pb push_back
int n,q;
map<pair<int,int>,int> was;
int Pitaj(int x, int y);
int Ask(int x, int y)
{
	if(was.count({x,y})) return was[{x,y}];
	else return was[{x,y}]=Pitaj(x,y);
}
int GetMax(int x)
{
	int mx=Ask(x,1),id=1;
	for(int i=2;i<=n;i++) if(Ask(x,i)>mx) mx=Ask(x,i),id=i;
	return id;
}
int GetMin(int x)
{
	int mn=Ask(1,x),id=1;
	for(int i=2;i<=n;i++) if(Ask(i,x)<mn) mn=Ask(i,x),id=i;
	return id;
}
bool Check(int x, int y)
{
	for(int i=1;i<=n;i++)
	{
		if(i!=x && Ask(i,y)<=Ask(x,y)) return 0;
		if(i!=y && Ask(x,i)>=Ask(x,y)) return 0;
	}
	return 1;
}
const int N=3050;
bool ok[N][N];
vector<int> Nadji(int _N, int _Q)
{
	n=_N;
	q=_Q;
	vector<pair<int,int>> cand;
	for(int i=1;i<=n;i++) for(int j=1;j<=n;j++)
	{
		ok[i][j]=1;
		if(i!=j && Ask(i,i)>=Ask(j,j)) ok[i][j]=0;
		if(i+j!=n+1 && Ask(i,n-i+1)>=Ask(n-j+1,j)) ok[i][j]=0;
		if(ok[i][j]) cand.pb({i,j});
	}
	if(cand.empty()) return vector<int>(2,0);
	for(auto p:cand)
	{
		if(Check(p.first,p.second))
		{
			vector<int> ans;
			ans.pb(p.first);
			ans.pb(p.second);
			return ans;
		}
	}
	return vector<int>(2,0);
}