//Problem #D from Codeforces mindcode
#include <cmath>

#include <algorithm>
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;

#ifdef __APPLE__
#define DEBUG 1
#else
#define DEBUG 0
#endif

#define fi first
#define se second
#define int64 long long

int el[250][220];
int nr[2][250];

//ifstream in("date.in");
//ofstream out("date.out");

int main() {
	int n, m;
	cin >> n >> m;

    for (int i = 0; (i + 2) * 220 <= n; ++i)
		nr[0][i] = 220;
	nr[0][(n - 1) / 220] = ((n - 1) % 220) + 1;

	while (m--) {
		int t;
		cin >> t;

		if (t == 1) {
			int a, b, c;
			cin >> a >> b >> c;
			a--;
			b--;
			int A = a / 220;
			int B = b / 220;
			for (int i = A + 1; i < B; ++i) {
				nr[c][i] = 220;
				nr[c ^ 1][i] = 0;
			}

			if (A == B) {
				for (int i = a % 220; i <= b % 220; ++i) {
					nr[el[A][i]][A]--;
					nr[c][A]++;
					el[A][i] = c;
				}
			} else {
				for (int i = a % 220; i < 220; ++i) {
					nr[el[A][i]][A]--;
					nr[c][A]++;
					el[A][i] = c;
				}
				for (int i = 0; i < b % 220; ++i) {
					nr[el[B][i]][B]--;
					nr[c][B]++;
					el[B][i] = c;
				}
			}
		} else {
			int x;
			cin >> x;
			x--;
			int X = x / 220;
            int c = el[X][x % 220];
			
			int st = X - 1, dr = X + 1;
			for (; st >= 0 and nr[c][st] == 220; --st)
				;
			for (; dr <= n / 220 and nr[c][dr] == 220; ++dr)
				;
			int c_st, c_dr;

			for (c_st = x % 220; c_st >= 0 and el[X][c_st] == c; --c_st)
				;
			for (c_dr = x % 220; c_dr < 220 and el[X][c_dr] == c; ++c_dr)
				;


			int rez_st, rez_dr;

			if (c_st == -1) {
				for (c_st = 219; c_st >= 0 and el[st][c_st] == c; --c_st)
					;
				rez_st = (c_st + 1) + st * 220 + 1;
			} else {
				rez_st = (c_st + 1) + X * 220 + 1;
			}
			if (c_dr == 220) {
				if (X == (n - 1) / 220) {
					rez_dr = n;
				} else {
					for (c_dr = 0; c_dr < 220 and el[dr][c_dr] == c; ++c_dr)
						;
					rez_dr = (c_dr - 1) + dr * 220 + 1;
				}
			} else {
				rez_dr = (c_dr - 1) + X * 220 + 1;
			}
			rez_dr = min(rez_dr, n);
			rez_st = max(1, rez_st);
			cout << el[X][x % 220] << ' ' << rez_st << ' ' << rez_dr << '\n';
		}
//		for (int i = 0; i < n; ++i)
//			cerr << el[0][i] << ' ';
//		cerr << '\n' << nr[0][0] << '\t' << nr[1][0] << '\n';
	}
//	in.close();
//	out.close();
    return 0;
}