/*
TASK:bands
LANG:C++
*/
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
int n,m;
void solve2()
{
   int A[n+2];
   int i,p,u,q,c;
   for(i=0;i<=n;i++)A[i]=0;
   for(i=0;i<m;i++)
   {
      scanf("%d",&p);
      if(p==1)
      {
         scanf("%d%d%d",&u,&q,&c);
         for(;u<q;u++)
        A[u]=c;
         
      }
      else
      if(p==3){scanf("%d",&u);printf("%d\n",A[u]);}
   
      
   }
}
void solve()
{
   
   scanf("%d%d",&n,&m);
   if(n*m>25000000){solve2();return;}
   vector<int>A[n+2];
   int i;
   int p,u,q,c;
   for(i=0;i<m;i++)
   {
      scanf("%d",&p);
      if(p==1)
               {
               scanf("%d%d%d",&u,&q,&c);
               for(;u<q;u++)
               A[u].push_back(c);
               }
       else
      if(p==2)
               {
                 scanf("%d%d",&u,&q);
                 bool OOO=false;
                 int last=A[u].back();
                int r=u;
                 for(;r<q;r++)
                 if(A[r].back()!=last){OOO=true;break;}
                 if(!OOO)
                 for(;u<q;u++)
                     A[u].pop_back();
              
               }        
            else 
      {
         scanf("%d",&u);
         if(!A[u].empty())printf("%d\n",A[u].back());
             else
                  printf("0\n");
      }
   }


}

int main()
{

solve();
return 0;
}
