#include #include #include #include using namespace std; int n, m; map > r; typedef map >::const_iterator iter; int find_range(int x) { return (--r.upper_bound(x))->first; } void print_ranges() { for (iter it = r.begin(); it != r.end(); it++) { cout << '(' << it->first << ", " << it->second.first << " = " << it->second.second << ") "; } cout << endl; } void split(int at) { int pos = find_range(at); if (pos < at) { r[at] = r[pos]; r[pos].first = at - 1; } } void modif(int x, int y) { while (x <= y) { split(x); split(y + 1); int pos = find_range(x); r[pos].second = !r[pos].second; x = r[pos].first + 1; } } void query(int x) { int left = find_range(x); int right = left; while (left > 1) { int prev = find_range(left - 1); if (r[prev].second == r[left].second) left = prev; else break; } while (right < n) { int next = find_range(r[right].second + 1); if (r[next].second == r[right].second) right = next; else break; } cout << r[left].second << ' ' << left << ' ' << r[right].first << '\n'; } int main() { cin >> n >> m; r[1] = make_pair(n, 0); for (int i = 0; i < m; i++) { int t, x, y; cin >> t >> x; if (t == 1) { cin >> y; modif(x, y); } else { query(x); } //print_ranges(); } }