/*
TASK:bands
LANG:C
*/

#include <stdio.h>

typedef struct lenta_t
{
    int first;
    int last;
    int color;
} lenta;

lenta a[100001];
long num;

void cmd1(int f, int l, int c)
{
    a[num].first = f;
    a[num].last = l;
    a[num].color = c;
    num++;
}

void cmd2(int f, int l)
{
    long i = num - 1, j;

    while(i >= 0)
    {
        if((a[i].first == f) && (a[i].last == l))
        {
            j = i;
            num--;
            while(j < num)
            {
                a[j].first = a[j + 1].first;
                a[j].last = a[j + 1].last;
                a[j].color = a[j + 1].color;
                j++;
            }

            return;
        }

        i--;
    }
}

void cmd3(int f)
{
    long i = num - 1;

    while(i >= 0)
    {
        if((a[i].first <= f) && (a[i].last > f))
        {
            printf("%d\n", a[i].color);
            return;
        }

        i--;
    }
}

int main(int argc, char* argv[])
{
    long m;
    int n;
    int cmd;
    int i, j, c;

    num = 0;
    scanf("%d %d", &n, &m);
    cmd1(0, n, 0);

    while(m > 0)
    {
        scanf("%d", &cmd);
        switch(cmd)
        {
            case(1):
                scanf("%d %d %d", &i, &j, &c);
                cmd1(i, j, c);
                break;
            case(2):
                scanf("%d %d", &i, &j);
                cmd2(i, j);
                break;
            case(3):
                scanf("%d", &i);
                cmd3(i);
                break;
        }

        m--;
    }

    return 0;
}
