#include #include #include #include #include using namespace std; /* long long f1(const multiset &mset, long long many) { long long high=1000000047LL, low=0; long long mid; if (mset.size()low+1) { mid=(high+low)/2; multiset::iterator it = mset.upper_bound(mid); if (distance(mset.begin(), it)==many) { multiset::iterator it2=mset.upper_bound(mid); it2--; return (*it2); } if (distance(mset.begin(), it) > many) high=mid; else low=mid; } return -1; } */ long long f1(multiset &mset, long long many) { if (mset.size()many) { multiset::iterator it = mset.end(); mset.erase(--it); } return *(mset.rbegin()); } int main() { int n; long long m; while (cin>>m>>n) { vector > input(n); multiset mset; for (int i=0; i>input[i].first>>input[i].second; sort(input.begin(), input.end()); int k=0; mset.insert(input[k++].second); long long best=-1; do { while (k