#include <algorithm>
#include <iostream>
#include <set>
using namespace std;
 
struct IMidiMsgExt {
	int mTick;
	int mNote;
};
 
struct IMidiMsgExtComp {
    bool operator()(const IMidiMsgExt& lhs, const IMidiMsgExt& rhs) {
        return lhs.mTick < rhs.mTick;
    }
};
 
int main() {
	multiset<IMidiMsgExt, IMidiMsgExtComp> playingNotes;
 
	playingNotes.emplace(IMidiMsgExt{13, 0});
	playingNotes.emplace(IMidiMsgExt{13, 60});
	playingNotes.emplace(IMidiMsgExt{13, 60});
	playingNotes.emplace(IMidiMsgExt{42, 0});
	playingNotes.emplace(IMidiMsgExt{42, 60});
 
	for(auto& i : playingNotes) {
		cout << i.mTick << ' ' << i.mNote << endl;
	}
 
	cout << endl;
 
	const auto it = find_if(cbegin(playingNotes), cend(playingNotes), [value = int{60}](const auto& i){return i.mNote == value;});
 
	if(it != cend(playingNotes)) {
		playingNotes.erase(it);
	}
 
	for(auto& i : playingNotes) {
		cout << i.mTick << ' ' << i.mNote << endl;
	}	
}
				I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c2V0Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IElNaWRpTXNnRXh0IHsKCWludCBtVGljazsKCWludCBtTm90ZTsKfTsKCnN0cnVjdCBJTWlkaU1zZ0V4dENvbXAgewogICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IElNaWRpTXNnRXh0JiBsaHMsIGNvbnN0IElNaWRpTXNnRXh0JiByaHMpIHsKICAgICAgICByZXR1cm4gbGhzLm1UaWNrIDwgcmhzLm1UaWNrOwogICAgfQp9OwoKaW50IG1haW4oKSB7CgltdWx0aXNldDxJTWlkaU1zZ0V4dCwgSU1pZGlNc2dFeHRDb21wPiBwbGF5aW5nTm90ZXM7CgkKCXBsYXlpbmdOb3Rlcy5lbXBsYWNlKElNaWRpTXNnRXh0ezEzLCAwfSk7CglwbGF5aW5nTm90ZXMuZW1wbGFjZShJTWlkaU1zZ0V4dHsxMywgNjB9KTsKCXBsYXlpbmdOb3Rlcy5lbXBsYWNlKElNaWRpTXNnRXh0ezEzLCA2MH0pOwoJcGxheWluZ05vdGVzLmVtcGxhY2UoSU1pZGlNc2dFeHR7NDIsIDB9KTsKCXBsYXlpbmdOb3Rlcy5lbXBsYWNlKElNaWRpTXNnRXh0ezQyLCA2MH0pOwoJCglmb3IoYXV0byYgaSA6IHBsYXlpbmdOb3RlcykgewoJCWNvdXQgPDwgaS5tVGljayA8PCAnICcgPDwgaS5tTm90ZSA8PCBlbmRsOwoJfQoJCgljb3V0IDw8IGVuZGw7CgkKCWNvbnN0IGF1dG8gaXQgPSBmaW5kX2lmKGNiZWdpbihwbGF5aW5nTm90ZXMpLCBjZW5kKHBsYXlpbmdOb3RlcyksIFt2YWx1ZSA9IGludHs2MH1dKGNvbnN0IGF1dG8mIGkpe3JldHVybiBpLm1Ob3RlID09IHZhbHVlO30pOwoJCglpZihpdCAhPSBjZW5kKHBsYXlpbmdOb3RlcykpIHsKCQlwbGF5aW5nTm90ZXMuZXJhc2UoaXQpOwoJfQoJCglmb3IoYXV0byYgaSA6IHBsYXlpbmdOb3RlcykgewoJCWNvdXQgPDwgaS5tVGljayA8PCAnICcgPDwgaS5tTm90ZSA8PCBlbmRsOwoJfQkKfQ==