#include #include #include #include using namespace std; typedef set::iterator iter; ifstream f("date.in"); #define f cin bool mask = 1; int n, m; set brs; void update() { int st, dr; f >> st >> dr; st--; if (st < 1 && 1 <= dr) { mask ^= 1; } if (brs.find(st) != brs.end() && st != 0) { brs.erase(brs.find(st)); } else { brs.insert(st); } if (brs.find(dr) != brs.end() && dr != n) { brs.erase(brs.find(dr)); } else { brs.insert(dr); } } void query() { int p; f >> p; int stanga = 0, dreapta = 0; iter st = lower_bound(brs.begin(), brs.end(), p - 1); if (brs.find(p - 1) == brs.end()) { st--; } stanga = *st + 1; dreapta = *lower_bound(brs.begin(), brs.end(), p); int s = 0; for (iter it = brs.begin(); it != brs.end(); it++) { s++; if (it == st) { break; } } cout << ((s % 2) ^ mask) << ' ' << stanga << ' ' << dreapta << '\n'; } int main() { f >> n >> m; brs.insert(0); brs.insert(n); for (int i = 1; i <= m; i++) { int op; f >> op; switch (op) { case 1: update(); break; case 2: query(); break; } } return 0; }