#include #include #include #include #include #include using namespace std; int AINT[500010]; int Lazy[500010]; void update(int a, int b, int X, int Y, int K) { int p; if (X != Y) { p = Lazy[K]; if (Lazy[K]) { AINT[K] = (X - Y) - AINT[K]; Lazy[K] = 0; Lazy[K * 2] ^= 1; Lazy[K * 2 + 1] ^= 1; } } if (X <= a && b <= Y) { if (X != Y) { Lazy[K] = 0; Lazy[K * 2] ^= 1; Lazy[K * 2 + 1] ^= 1; } } update(a, b, X, (X + Y) / 2, K * 2); update(a, b, (X + Y) / 2 + 1, Y, K * 2 + 1); } int query(int a, int b, int X, int Y,int K) { int p = 0; if (X != Y) { p = Lazy[K]; if (Lazy[K]) AINT[K] = (X - Y) - AINT[K]; Lazy[K] = 0; Lazy[K * 2] ^= 1; Lazy[K * 2 + 1] ^= 1; } int a1=0, b1 = 0; a1=query(a, b, X, (X + Y) / 2, K * 2); b1=query(a, b, (X + Y) / 2 + 1, Y, K * 2 + 1); return a1 + b1; } int main() { int N, M; cin >> N >> M; int op = 0; for (int i = 1; i <= N; ++i) { cin >> op; if (op == 1) { int x, y; cin >> x >> y; update(x, y, 1, N, 1); } else { int p; cin >> p; int l = p, r = N; int l1 = p, r1 = p; int x = query(p, p, 1, N, 1); while (l <= r) { int mid = (l + r) / 2; if (query(p, mid, 1, N, 1) == x*(l - mid + 1)) { r1 = mid; l = mid + 1; } else r = mid - 1; } l = 1, r = p; while (l <= r) { int mid = (l + r) / 2; if (query(mid, p, 1, N, 1) == x*(l - mid + 1)) { l1 = mid; r = mid - 1; } else l = mid + 1; } cout << x<<" "<