#include <iostream>
#include <set>
using namespace std;

int main() {
    cin.sync_with_stdio(0);
    int N, L; cin >> N >> L;
    int cnt[2] = {L, 0}, odmor = 0;

    set<pair<int, int> > aktivni;
    set<int> neaktivni[2];
    aktivni.insert(make_pair(0, 1));
    aktivni.insert(make_pair(L, -1));
    for ( int i=0; i<N; ++i ) {
        int S, D; cin >> S >> D; --S;

        set<pair<int, int> >::iterator p = aktivni.upper_bound(make_pair(D, 0));
        --p;
        if ( p->second == S ) {
            neaktivni[S].insert(D);
        } else {
            set<pair<int, int> >::iterator r = aktivni.lower_bound(make_pair(D, 0));
            set<int>::iterator q = neaktivni[!S].lower_bound(D);

            int delta;
            if ( q == neaktivni[!S].end() || *q > r->first ) {
                delta = r->first - D;
                if ( r->first < L ) {
                    neaktivni[S].insert(r->first);
                    aktivni.erase(r);
                }
                odmor += r->first == L;
            } else {
                delta = *q - D;
                aktivni.insert(make_pair(*q, !S));
                neaktivni[!S].erase(q);
                odmor += 2;
            }
            cnt[S] -= delta;
            cnt[!S] += delta;
            aktivni.insert(make_pair(D, S));
        }
        cout << cnt[0] << ' ' << cnt[1] << ' ' << odmor << '\n';
    }
    return 0;
}
