/*
TASK:bands
LANG:C++
*/
#include <stdio.h>
#include <iostream>
using namespace std;
struct pole
{
      int s,f;
      int c;
};
pole a[100001];

void rem(int x,int y,long int mr,pole *a)
{
     long int mx=mr;
     mx++;
          do
          mx--;
          while (a[mx].s!=x||a[mx].f!=y);
          a[mx].s=-1;
          a[mx].f=-1;
 };

void show(int x,long int mr,pole *a)
{
     long int mx=mr;
     mx++;
    do
     mx--;
     while (a[mx].s>x||a[mx].f<=x);
     cout<<a[mx].c<<endl;
 }

main()
{
      int i,j,n,t,cl;
      long int q=0,k
      ,m;
      cin>>n>>m;
      a[0].s=0;
      a[0].f=n;
      a[0].c=0;
      for (int k=1;k<=m;k++)
          {
               cin>>t;
               switch (t)
               {
                      case 1 : cin>>i>>j>>cl;q++;a[q].s=i;a[q].f=j;a[q].c=cl;break;
                      case 2 : cin>>i>>j;rem(i,j,q,a);break;
                      case 3 : cin>>i;show(i,q,a);break;
               };
           };
}
