#include<stdio.h>
#include<math.h>
#define A_MAX 100003
#define MAX 2147483647
int a[A_MAX];
int l[A_MAX];
int b,n;
 
int j_min(int, int);
int j_max(int, int);
void update(int);



 
int main(){
 
    int q,i,j,que,x,y,z;
     
    scanf("%d %d",&n,&q);
    b=sqrt(n);
     
    for(i=0;i<n;i++)a[i]=MAX;
    for(i=0;i<n;i++)l[i]=-1;
     
    for(j=0;j<q;j++){
     
        scanf("%d",&que);

        if(que){
            scanf("%d",&x);
            if(l[x/b]!=-1)update(x/b);
            printf("%d\n",a[x]);
        }
         
        else {
            scanf("%d %d %d",&x,&y,&z);
            if(l[x/b]!=-1)update(x/b);
            for(i=x;i<=j_min(y,(x/b+1)*b-1);i++)a[i]=z;
            for(i=x/b+1;i<y/b;i++)l[i]=z;
            if(l[y/b]!=-1)update(y/b);
            for(i=j_max(x,y/b*b);i<=y;i++)a[i]=z;
        }
         
    }
     
    return 0;
     
}

int j_min(int x,int y){
    if (x > y) return y;
    return x;   
}

int j_max(int x , int y){
    if ( x>y ) return x;
    return y;   
}


void update(int x){
    for(int i=x*b;i<=j_min(n-1,(x+1)*b-1);i++)a[i]=l[x];
    l[x]=-1;
    return;
}


