Problem:
Score : 300 points

Problem Statement

There is an empty array.
The following N operations will be performed to insert integers into the array.
In the i-th operation (1≤i≤N), b_i copies of an integer a_i are inserted into the array.
Find the K-th smallest integer in the array after the N operations.
For example, the 4-th smallest integer in the array \{1,2,2,3,3,3\} is 3.

Constraints

1≤N≤10^5

1≤a_i,b_i≤10^5

1≤K≤b_1…+…b_n

All input values are integers.

Input

Input is given from Standard Input in the following format:

N K
a_1 b_1
:
a_N b_N

Output

Print the K-th smallest integer in the array after the N operations.

Sample Input 1

3 4
1 1
2 2
3 3

Sample Output 1

3

The resulting array is the same as the one in the problem statement.

Sample Input 2

10 500000
1 100000
1 100000
1 100000
1 100000
1 100000
100000 100000
100000 100000
100000 100000
100000 100000
100000 100000

Sample Output 2

1

Solution in Pascal (FPC 2.6.2) (judge verdict: Accepted)

program canh_toan;
uses math;
const minn=0;
      maxn=trunc(1e5)+5;
var n:longint;
    k:int64;
    a,b:array [minn..maxn] of int64;
procedure sort(l,r:int64);
var i,j,k,tg:int64;
begin
i:=l;j:=r;tg:=a[random(r-l+1)+l];
repeat
while (a[i]<tg) do inc(i);
while (tg<a[j]) do dec(j);
if not(i>j) then
   begin
     k:=a[i];a[i]:=a[j];a[j]:=k;
     k:=b[i];b[i]:=b[j];b[j]:=k;
     inc(i);
     dec(j);
   end;
until i>j;
if (l<j) then sort(l,j);
if (i<r) then sort(i,r);
end;
procedure main();
var i:longint;
begin
readln(n,k);
for i:=1 to n do readln(a[i],b[i]);
sort(1,n);
b[0]:=0;
for i:=1 to n do b[i]:=b[i]+b[i-1];
i:=1;
while (b[i]<k) do inc(i);
write(a[i]);
end;
BEGIN
  main();
END.