#include using namespace std; const int MAXX = 1e3; class Event { public: int type; int time; pair who; Event(int _type, int _time, pair _who = pair ()): type(_type), time(_time), who(_who) {} bool operator<(Event other) const { if(time == other.time) return type > other.type; return time < other.time; } }; vector solveFast(vector t, vector p, int T) { int n = t.size(); vector events; for(int i = 0; i < n; ++i) { events.push_back(Event(0, t[i] + T)); events.push_back(Event(1, t[i] - p[i], {p[i], i})); } sort(events.begin(), events.end()); set> waiting; vector sol(n, 0); for(const auto& event : events) { if(event.type == 0) { auto client = *(waiting.begin()); sol[client.second] = event.time + client.first; waiting.erase(waiting.begin()); } else { waiting.insert(event.who); } } return sol; } int main() { ifstream cin("ramen.in"); ofstream cout("ramen.out"); int n, T; cin >> n >> T; vector t(n, 0), p(n, 0); set times; for(int i = 0; i < n; ++i) { cin >> t[i] >> p[i]; times.insert(t[i]); } assert(int(times.size()) == n); vector sol = solveFast(t, p, T); for(int i = 0; i < n; ++i) { cout << sol[i] << "\n"; } return 0; }