program yukicoder_2492 use, intrinsic :: iso_fortran_env implicit none integer(int32) :: n, w integer(int32), allocatable :: vs(:), ws(:), ws_le_idx(:) integer(int32) :: i read(input_unit, *) n, w allocate(vs(n), ws(n)) do i = 1, n read(input_unit, *) vs(i), ws(i) end do ws_le_idx = pack([(i, i = 1, n)], ws(:) <= w) if (size(ws_le_idx) == 0) then write(output_unit, '(i0)') -1 else write(output_unit, '(i0)') maxval(vs(ws_le_idx)) end if end program yukicoder_2492