#include using namespace std; typedef long long ll; typedef vector vl; typedef long double ld; typedef vector vd; typedef bool bl; typedef vector vb; typedef unordered_map> graph; const ll e5 = 1 << 20; const ll mod = 998244353; const ll e3 = 1 << 13; const ll INF = 1ll << 60; ll n,k; ll a[e5],b[e5]; map m; ll dp[e5]; ll ans; int main(){ cin >> n >> k; for(ll i = 0;i < n;i++) cin >> a[i] >> b[i]; ll top = 1000000000; ll bottom = 0; while(top-bottom > 1){ ll middle = (top+bottom)/2; ll mem = 0; for(ll i = 0;i < n;i++){ if(a[i] > middle) continue; if(b[i] > middle) mem += middle-a[i]+1; else mem += b[i]-a[i]+1; } if(mem >= k) top = middle; else bottom = middle; } cout << top << endl; }