#include #define rep(i, n) for(int i = 0, i##_len = (n); i < i##_len; ++i) #define repp(i, m, n) for(int i = m, i##_len = (n); i < i##_len; ++i) #define all(x) (x).begin(), (x).end() #define clr(ar, val) memset(ar, val, sizeof(ar)) template bool chmax(T &a, const T &b) { if (a < b) { a = b; return 1; } return 0; } template bool chmin(T &a, const T &b) { if (b < a) { a = b; return 1; } return 0; } int gcd(int a,int b){return b?gcd(b,a%b):a;} using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair P; typedef long double ld; int main(void) { priority_queue que; int n, k, a, b; cin >> n >> k; rep(i, n){ cin >> a >> b; repp(j, a, min(a + k, b) + 1){ que.push(j); } } rep(i, k) que.pop(); cout << que.top() << endl; return 0; }