#include<bits/stdc++.h>
#define ll long long
#define int long long
using namespace std;



/*Thanks AshishGup for the below Segment Tree Implementation.*/
struct node{
    int data;
    node():data(0){};
};

struct SegTree{
    int n;
    vector<node> st;
    vector<bool> cLazy;
    vector<int> lazy;

    SegTree(int _n){
        n=_n;
        st.resize(4*n + 5);
        cLazy.assign(4*n + 5, false);
        lazy.assign(4*n + 5, 0);
    }

    void merge(node &cur,node &lChild,node &rChild){
        cur.data=min(lChild.data,rChild.data);
    }

    int leftIndex(int i){return 2*i+1;}
    int rightIndex(int i){return 2*i+2;}
    
    void propagate(int index,int l,int r){
        if(l!=r){
            int mid=(l+r)/2;
            int lindex=leftIndex(index);
            int rindex=rightIndex(index);
            cLazy[lindex]=1;
            cLazy[rindex]=1;
            lazy[lindex]=lazy[index];
            lazy[rindex]=lazy[index]+(mid+1-l); 
        }
        st[index].data=lazy[index];
        cLazy[index]=0;
        lazy[index]=0;
    }

    void build(int index,int l,int r){
        if(l==r){
            st[index].data = 1e9;
            return;
        }
        int mid=(l+r)/2;
        int lindex=leftIndex(index);
        int rindex=rightIndex(index);
        build(lindex,l,mid);
        build(rindex,mid+1,r);
        merge(st[index],st[lindex],st[rindex]);
    }

    node query(int index,int l,int r,int ql,int qr){
        if(cLazy[index])    propagate(index,l,r);
        if(qr<l || ql>r)    return node();
        
        if(ql<=l && r<=qr)  return st[index];
        int mid=(l+r)/2;
        int lindex=leftIndex(index);
        int rindex=rightIndex(index);

        node left=query(lindex,l,mid,ql,qr);
        node right=query(rindex,mid+1,r,ql,qr);
        node cur;
        merge(cur,left,right);
        return cur;
    }

    node query(int index,int l,int r,int pos){
        if(cLazy[index])    propagate(index,l,r);
        if(l==r)            return st[index];
        int mid=(l+r)/2;
        int lindex=leftIndex(index);
        int rindex=rightIndex(index);
        if(pos<=mid)    return query(lindex,l,mid,pos);
        else            return query(rindex,mid+1,r,pos);
    }   

    node query(int pos){return query(0,0,n-1,pos);}
    node query(int ql,int qr){return query(0,0,n-1,ql,qr);}

    void update(int index,int l,int r,int ql,int qr,int val){
        if(cLazy[index])    propagate(index,l,r);
        if(qr<l || ql>r)    return;

        if(ql<=l && r<=qr){
            cLazy[index]=1;
            lazy[index]=val+(l-ql);
            propagate(index,l,r);
            return;
        }
        int mid=(l+r)/2;
        int lindex=leftIndex(index);
        int rindex=rightIndex(index);

        update(lindex,l,mid,ql,qr,val);
        update(rindex,mid+1,r,ql,qr,val);
        merge(st[index],st[lindex],st[rindex]);
    }

    void update(int index,int l,int r,int pos,int val){
        if(cLazy[index])     propagate(index,l,r);
        if(l==r){
            st[index].data=val;
            return;
        }
        int mid=(l+r)/2;
        int lindex=leftIndex(index);
        int rindex=rightIndex(index);

        if(pos<=mid)    update(lindex,l,mid,pos,val);
        else            update(rindex,mid+1,r,pos,val);
        merge(st[index],st[lindex],st[rindex]);
    }
    void update(int pos,int val){update(0,0,n-1,pos,val);}
    void update(int l,int r,int val){update(0,0,n-1,l,r,val);}
};

int n,m;

main(){
    #ifndef ONLINE_JUDGE
        freopen("input.txt","r",stdin);
        freopen("output.txt","w",stdout);
    #endif

    ios_base::sync_with_stdio(false);cin.tie(NULL);
    cin>>n>>m;
    SegTree st(m);
    for(int i=0;i<n;i++){

        int l,r;cin>>l>>r;
        l--;r--;
        if(l==0){
            st.update(l,r,1e9);    
        }else{
            st.update(l,r,st.query(l-1).data+1);
        }


        ll temp=st.query(0,m-1).data;
        if(temp>=(ll)2e5){
            cout<<-1<<"\n";
        }else{
            cout<<temp+i+1<<"\n";
        }

        
    }
}

Measured memory_bytes: 15816