#include<iostream>#include<vector>#include<algorithm>#definelllonglongusingnamespace std;structarea{
ll ti, ci;};
ll n, m, k, t, c, lastDay;
vector<area>list;
ll recourseSpend(int day){
ll sum =0;for(size_t i =0; i < n; i++){if(list[i].ti > day)// can improve{
sum += list[i].ci *(list[i].ti - day);}}return sum;}intbinarySearch(){int left = k, right = lastDay, mid =0;while(left <= right){
mid = left +(right - left)/2;if(mid == k ||recourseSpend(mid)<= m && m <recourseSpend(mid -1)){return mid;}elseif(recourseSpend(mid)< m)// enough{
right = mid -1;}else// not enough{
left = mid +1;}}return k;// not found}intmain(){
cin >> n >> m >> k;for(size_t i =0; i < n; i++){
cin >> t >> c;
list.push_back({ t,c });
lastDay =max(lastDay, t);}
cout <<binarySearch();return0;}