#include #include unsigned long int n, m, nrc = 0; unsigned long int c[200000], is[100000], js[100000], vs[100000], k = 0; unsigned long int Smaller(unsigned long int, unsigned long int); unsigned long int Greater(unsigned long int, unsigned long int); int main() { unsigned long int i, j, a, b, t1, t2; short int t; scanf("%lu%lu", &n, &m); for (i = 0; i < m; i++) { scanf("%hd", &t); if (t == 1) { scanf("%lu%lu", &a, &b); for (j = 0; j < nrc; j++) { if (((b >= c[2*j]) && (b <= c[2*j+1])) || ((a >= c[2*j]) && (a <= c[2*j+1]))) { t1 = c[2*j]; t2 = c[2*j+1]; c[2*j] = Smaller(a, t1); c[2*j+1] = Greater(a, t1) - 1; a = Smaller(t2, b) + 1; b = Greater(t2, b); } } if (a <= b) { c[2*nrc] = a; c[2*nrc+1] = b; nrc += 1; } } else if (t == 2) { int ti = 0, tj = 100000; scanf("%lu", &a); for (j = 0; j < 2*nrc; j += 2) { if ((a >= c[j]) && (a <= c[j+1])) { is[k] = c[j]; js[k] = c[j+1]; vs[k] = 1; k += 1; ti = -1; break; } else if ((a > c[j+1]) && (c[j+1] > ti)) ti = c[j+1] + 1; else if ((a < c[j]) && (c[j] < tj)) tj = c[j] - 1; } if (ti != -1) { if (tj == 100000) tj = n; is[k] = ti; js[k] = tj; vs[k] = 0; k += 1; } } } for (i = 0; i < k; i++) printf("%lu %lu %lu\n", vs[i], is[i], js[i]); return 0; } unsigned long int Smaller(unsigned long int a, unsigned long int b) { if (a < b) return a; else return b; } unsigned long int Greater(unsigned long int a, unsigned long int b) { if (a > b) return a; else return b; }