program kadai
implicit none
integer  ::  n,m
integer,allocatable  ::  a(:),b(:)
integer  ::  i,k
integer  ::  ans
integer  ::  loc

read(*,*) n,m
allocate(a(n))
allocate(b(n))

do i=1,n
    read(*,*) a(i),b(i)
end do


ans=0

do while (m>0)
    call qsort(a,b)
    !write(*,*) a
    !write(*,*) ""
    if (a(1)==0) then
        write(*,*) ans
        stop
    end if
    do i=1,n
        if (a(i)>M) then
            a(i)=0
            b(i)=0
        else
            exit
        end if
    end do
    !write(*,*) a
    !write(*,*) ""

    loc=maxloc(b,1)
    ans=ans+maxval(b)
    a(loc)=0
    b(loc)=0
    m=m-1

    !write(*,*) loc,ans,m

end do

write(*,*) ans




stop

contains


subroutine swap(a,b)
implicit none
integer,intent(inout)  ::  a,b
integer  ::  c
c=a
a=b
b=c
end subroutine swap

subroutine qsort(x,y)
implicit none
integer, intent(inout)  ::  x(:)
integer, intent(inout)  ::  y(:)
integer  ::  first,last
first=1
last=size(x)
call q2sort(x,y,first,last)
return
end subroutine qsort

recursive subroutine q2sort(x,y,first,last)
implicit none
integer, intent(inout)  ::  x(:)
integer, intent(inout)  ::  y(:)
integer, intent(inout) ::  first,last
integer  ::  fir, las
integer  ::  i,j
integer  ::  n
    n=x((first+last)/2)
    i=first
    j=last
    do
        do while (x(i)>n)
            i=i+1
        end do
        do while(x(j)<n)
            j=j-1
        end do
        if (i>j .or. i==j) then
            exit
        end if
        call swap(x(i),x(j))
        call swap(y(i),y(j))
        i=i+1
        j=j-1
    end do
    if (first<i-1) then
        las=i-1
        call q2sort(x,y,first,las)
    end if
    if (last>j+1) then
        fir=j+1
        call q2sort(x,y,fir,last)
    end if
end subroutine q2sort





end program kadai
