#include <bits/stdc++.h>
using namespace std;

int main() {
	int h, w; cin >> h >> w;
	int a[h], b[h];
	for(int i = 0; i < h; ++i) {
		cin >> a[i] >> b[i];
		--a[i], --b[i];
	}
	map<int, int> mp;
	multiset<int> st;
	for(int x = 0; x < w; ++x) {
		mp[x] = 0;
		st.insert(0);
	}
	for(int y = 0; y < h; ++y) {
		while(true) {
			auto itr = mp.lower_bound(a[y]);
			if(itr == mp.end()) break;
			auto [x, c] = *itr;
			if(x > b[y]) break;
			mp.erase(itr);
			st.erase(st.find(c));
			if(b[y] + 1 >= w) continue;
			if(not mp.count(b[y] + 1)) {
				mp[b[y] + 1] = c + (b[y] + 1) - x;
				st.insert(c + (b[y] + 1) - x);
			} else {
				if(c + (b[y] + 1) - x < mp[b[y] + 1]) {
					st.erase(st.find(mp[b[y] + 1]));
					mp[b[y] + 1] = c + (b[y] + 1) - x;
					st.insert(c + (b[y] + 1) - x);
				}
			}
		}
		if(st.empty()) {
			cout << -1 << '\n';
		} else {
			cout << *st.begin() + y + 1 << '\n';
		}
	}
	return 0;
}