#include<bits/stdc++.h>
using namespace std;
bool shouldSendAlert(map<int, deque<int>>& mp, int timeLimit, int eventLimit, int eventId, int eventTs, int userId){
deque<int>& dq = mp[userId];
int firstTs = dq.front();
cout << "EventInput:" << eventId << " " << eventTs << " " << userId << endl ;
bool alertUser = false;
while(eventTs - firstTs >= timeLimit && dq.size() > 0){
cout << "Popped Events" << dq.front() << endl;
dq.pop_front();
firstTs = dq.front();
}
if(dq.size() < eventLimit){
alertUser = true;
cout << "Alerted Event" << eventTs << endl;
}
dq.push_back(eventTs);
mp[userId] = dq;
return alertUser;
}
int main(){
int noOfTestCases;
cin >> noOfTestCases;
int timeLimit;
cin >> timeLimit;
int eventLimit;
cin >> eventLimit;
int i = 0 ;
map<int, deque<int>> mp;
while(i < noOfTestCases){
int eventId, eventTs, userId;
cin >> eventId >> eventTs >> userId;
cout << shouldSendAlert(mp, timeLimit, eventLimit,eventId, eventTs, userId);
cout << endl;
i++;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmJvb2wgc2hvdWxkU2VuZEFsZXJ0KG1hcDxpbnQsIGRlcXVlPGludD4+JiBtcCwgaW50IHRpbWVMaW1pdCwgaW50IGV2ZW50TGltaXQsIGludCBldmVudElkLCBpbnQgZXZlbnRUcywgaW50IHVzZXJJZCl7CglkZXF1ZTxpbnQ+JiBkcSA9IG1wW3VzZXJJZF07CglpbnQgZmlyc3RUcyA9IGRxLmZyb250KCk7Cgljb3V0IDw8ICJFdmVudElucHV0OiIgPDwgZXZlbnRJZCA8PCAiICIgPDwgZXZlbnRUcyA8PCAiICIgPDwgdXNlcklkIDw8IGVuZGwgOyAKCWJvb2wgYWxlcnRVc2VyID0gZmFsc2U7Cgl3aGlsZShldmVudFRzIC0gZmlyc3RUcyA+PSB0aW1lTGltaXQgJiYgZHEuc2l6ZSgpID4gMCl7CgkJY291dCA8PCAiUG9wcGVkIEV2ZW50cyIgPDwgZHEuZnJvbnQoKSA8PCBlbmRsOwoJCWRxLnBvcF9mcm9udCgpOwoJCWZpcnN0VHMgPSBkcS5mcm9udCgpOwoJfQoJaWYoZHEuc2l6ZSgpIDwgZXZlbnRMaW1pdCl7CgkJYWxlcnRVc2VyID0gdHJ1ZTsKCQljb3V0IDw8ICJBbGVydGVkIEV2ZW50IiA8PCBldmVudFRzIDw8IGVuZGw7Cgl9CglkcS5wdXNoX2JhY2soZXZlbnRUcyk7CgltcFt1c2VySWRdID0gZHE7CglyZXR1cm4gYWxlcnRVc2VyOwoKfQoKaW50IG1haW4oKXsKCWludCBub09mVGVzdENhc2VzOwoJY2luID4+IG5vT2ZUZXN0Q2FzZXM7CglpbnQgdGltZUxpbWl0OwoJY2luID4+IHRpbWVMaW1pdDsKCQoJaW50IGV2ZW50TGltaXQ7CgljaW4gPj4gZXZlbnRMaW1pdDsKCQoJaW50IGkgPSAwIDsKCW1hcDxpbnQsIGRlcXVlPGludD4+IG1wOwoJd2hpbGUoaSA8IG5vT2ZUZXN0Q2FzZXMpewoJCWludCBldmVudElkLCBldmVudFRzLCB1c2VySWQ7CgkJY2luID4+IGV2ZW50SWQgPj4gIGV2ZW50VHMgPj4gdXNlcklkOwoJCWNvdXQgPDwgc2hvdWxkU2VuZEFsZXJ0KG1wLCB0aW1lTGltaXQsIGV2ZW50TGltaXQsZXZlbnRJZCwgZXZlbnRUcywgdXNlcklkKTsKCQljb3V0IDw8IGVuZGw7CgkJaSsrOwoJfQoKfQ==