#include "code.h"
//#include <iostream>

using namespace std;

int MAT[10007][10007];
bool pitao[10007][10007]={false};
int N,K;

int getMat(int i,int j)
{
    if(!pitao[i][j])
    {
        MAT[i][j]=Pitaj(i+1,j+1);
        pitao[i][j]=true;
    }
    return MAT[i][j];
}

int maxVrste(int v)
{
    int tmax=getMat(v,0);
    int ti=0;
    bool uni=true;
    for(int i=1;i<N;i++)
    {
        if(getMat(v,i)>tmax){tmax=getMat(v,i);ti=i;uni=true;}
        else if(getMat(v,i)==tmax){uni=false;}
    }
    return uni?ti:-1;
}

int minKolone(int v)
{
    int tmin=getMat(0,v);
    int ti=0;
    bool uni=true;
    for(int i=1;i<N;i++)
    {
        if(getMat(i,v)<tmin){tmin=getMat(i,v);ti=i;uni=true;}
        else if(getMat(i,v)==tmin){uni=false;}
    }
    return uni?ti:-1;
}

std::vector<int> Nadji(int ni,int ki)
{
    int resx=-1, resy=-1;
    N=ni;K=ki;
    if(K==N*N)
    {
        for(int i=0;i<N;i++)
        {
            int idv=maxVrste(i);
            //cout<<"A "<<i<<" "<<idv<<endl;
            if(idv!=-1)
            {
                //cout<<"B "<<minKolone(idv)<<endl;
                if(minKolone(idv)==i)
                {
                    resx=i;
                    resy=idv;
                }
            }
        }
    }

    out:;
	vector<int> out;
	out.push_back(resx+1);
	out.push_back(resy+1);
	return out;
}