#include <algorithm>
#include <vector>
#include <iostream>
int main ( )
{
auto compare_first = [](std::pair<int, int> const & a, std::pair<int, int> const & b){
return a.first < b.first;
};
auto compare_second = [](std::pair<int, int> const & a, std::pair<int, int> const & b){
return a.second < b.second;
};
std::vector<std::pair<int, int>> values { {2,3}, {2,4}, {3,2}, {3,4}, {3,5} };
std::pair<int, int> value { 2, 3 };
auto it_c = std::upper_bound(values.begin(), values.end(), value, compare_first);
auto it = std::upper_bound(it_c, values.end(), value, compare_second);
std::cout << it->first << ',' << it->second;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IG1haW4gKCApCnsKCWF1dG8gY29tcGFyZV9maXJzdCA9IFtdKHN0ZDo6cGFpcjxpbnQsIGludD4gY29uc3QgJiBhLCBzdGQ6OnBhaXI8aW50LCBpbnQ+IGNvbnN0ICYgYil7CgkJcmV0dXJuIGEuZmlyc3QgPCBiLmZpcnN0OwoJfTsKCglhdXRvIGNvbXBhcmVfc2Vjb25kID0gW10oc3RkOjpwYWlyPGludCwgaW50PiBjb25zdCAmIGEsIHN0ZDo6cGFpcjxpbnQsIGludD4gY29uc3QgJiBiKXsKCQlyZXR1cm4gYS5zZWNvbmQgPCBiLnNlY29uZDsKCX07CgoJc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGludCwgaW50Pj4gdmFsdWVzIHsgezIsM30sIHsyLDR9LCB7MywyfSwgezMsNH0sIHszLDV9IH07CgoJc3RkOjpwYWlyPGludCwgaW50PiB2YWx1ZSB7IDIsIDMgfTsKCglhdXRvIGl0X2MgPSBzdGQ6OnVwcGVyX2JvdW5kKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuZW5kKCksIHZhbHVlLCBjb21wYXJlX2ZpcnN0KTsKCWF1dG8gaXQgPSBzdGQ6OnVwcGVyX2JvdW5kKGl0X2MsIHZhbHVlcy5lbmQoKSwgdmFsdWUsIGNvbXBhcmVfc2Vjb25kKTsKCQoJc3RkOjpjb3V0IDw8IGl0LT5maXJzdCA8PCAnLCcgPDwgaXQtPnNlY29uZDsKfQ==