/*
  Zenit CK 2011/2012, uloha h)
  Riesenie by Zemco.

  Maxovy intervalovy strom, ktory dokaze spracovat
  kazdu z operacii v case log(N)

  Implementovany klasicky haldovo v poli. ak je w vrchol potom rodic je w/2 a deti 2*w, 2*w+1.
  koren ma index 1, listy N az 2N-1 vratane.

  Vid vzorak KSP, rocnik 2006/2007 (24), 1. kolo zimnej casti, uloha 6 o Novom jorku
   */

#include<cstdio>
//pole pre strom, dlzka dolneho poschodia
int I[250000],dlzka,N,K;
int mx(int a, int b){ return a < b ? b : a; }

void update(int w, int nw){
  //ww - index v poli vo vrchole, kde momentalne sme
  int ww = w+N-1;
  //updatneme list
  I[ww] = nw;
  while(ww > 1){
    ww/=2;
    //upravime cestu od listu ku korenu
    I[ww] = mx(I[ww*2],I[ww*2+1]);
  }
}

//index pola, zodpovedajuci aktualnemu vrcholu. dlzka useku pod tymto vcholom. zelana hodnota
//predpoklad: v podstrome je aspon jedna hodnota aspon 'val'.
int search(int w, int length, int val){
  //uz sme v liste
  if (length == 1) return w-N+1;
  //nachadza sa nejaka vyssia hodnota v lavom podstrome?
  if (I[w*2] >= val) return search(w*2,length/2,val);
  else return search(w*2+1,length/2,val);
}

int main(){
  scanf("%d %d ",&dlzka,&K);
  N = 1;
  //najdeme najmensiu mocninu dvoch <= N
  while (N < dlzka) N*=2;

  //spracovame poziadavky
  for(int i=0;i<K;i++){
    int op;
    scanf("%d ",&op);
    if (op == 1){
      int w,nw;
      scanf("%d %d ",&w,&nw);
      //updatneme zamestnanca w na hodnotu spokojnosti nw
      update(w,nw);
    }else{
      int val;
      scanf("%d ",&val);
      //najdeme prislusneho zamestnanca
      if (val > I[1]) printf("nikto\n");
      else printf("%d\n",search(1,N,val));
    }
  }
  return 0;
}