#include <algorithm>
#include <iostream>
#include <fstream>
#include <set>

using namespace std;
typedef set<int>::iterator iter;

ifstream f("date.in");
#define f cin

bool mask = 1;
int n, m;
set<int> 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;
}