//Problem #D from Codeforces mindcode #include #include #include #include #include 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; }