using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static long[] NList => ReadLine().Split().Select(long.Parse).ToArray(); static long[][] NArr(long n) => Enumerable.Repeat(0, (int)n).Select(_ => NList).ToArray(); public static void Main() { Solve(); } static void Solve() { var c = NList; var (n, k) = (c[0], c[1]); var map = NArr(n); var set = new HashSet{ 0 }; foreach (var coin in map) { set.Add(coin[0]); set.Add(coin[1] + 1); } var list = new List(set); list.Sort(); var dic = new Dictionary(); for (var i = 0; i < list.Count; ++i) dic[list[i]] = i; var cum = new int[list.Count]; foreach (var coin in map) { ++cum[dic[coin[0]]]; --cum[dic[coin[1] + 1]]; } var rest = k; for (var i = 1; i + 1 < cum.Length; ++i) { cum[i] += cum[i - 1]; var count = (list[i + 1] - list[i]) * cum[i]; if (rest < count) { WriteLine(list[i] + (rest / cum[i])); return; } rest -= count; } } }