import heapq

N, M = list(map(int, input().split()))

X = sorted([list(map(int, input().split())) for _ in range(N)], key=lambda x: x[0])

heap = []

ans = 0

j = 0

 

for i in range(1, M+1): # M - i 日後にするバイトを考える

    while (j < N) and (X[j][0] <= i): # 支払いがi日以内

        heapq.heappush(heap, -X[j][1]) # 候補の追加。最大の値が欲しいためマイナスに

        j += 1

    if len(heap):

        ans += - heapq.heappop(heap) # 候補があるとき、候補から最大値を取り出す

print(ans)
from heapq import heappop, heappush

import sys

input = sys.stdin.readline



import heapq

N, M = list(map(int, input().split()))

X = sorted([list(map(int, input().split())) for _ in range(N)], key=lambda x: x[0])

heap = []

ans = 0

j = 0

 

for i in range(1, M+1): # M - i 日後にするバイトを考える

    while (j < N) and (X[j][0] <= i): # 支払いがi日以内

        heapq.heappush(heap, -X[j][1]) # 候補の追加。最大の値が欲しいためマイナスに

        j += 1

    if len(heap):

        ans += - heapq.heappop(heap) # 候補があるとき、候補から最大値を取り出す

print(ans)
import heapq

N, M = list(map(int, input().split()))
X = sorted([list(map(int, input().split())) for _ in range(N)], key=lambda x: x[0])
heap = []
ans = 0
j = 0
for i in range(1, M + 1):  # M - i 日後にするバイトを考える
    while (j < N) and (X[j][0] <= i):  # 支払いがi日以内
        heapq.heappush(heap, -X[j][1])  # 候補の追加。最大の値が欲しいためマイナスに
        j += 1
    if len(heap):
        ans += -heapq.heappop(heap)  # 候補があるとき、候補から最大値を取り出す
print(ans)

from heapq import heappop, heappush
import sys

input = sys.stdin.readline
import heapq

N, M = list(map(int, input().split()))
X = sorted([list(map(int, input().split())) for _ in range(N)], key=lambda x: x[0])
heap = []
ans = 0
j = 0
for i in range(1, M + 1):  # M - i 日後にするバイトを考える
    while (j < N) and (X[j][0] <= i):  # 支払いがi日以内
        heapq.heappush(heap, -X[j][1])  # 候補の追加。最大の値が欲しいためマイナスに
        j += 1
    if len(heap):
        ans += -heapq.heappop(heap)  # 候補があるとき、候補から最大値を取り出す
print(ans)

+from heapq import heappop, heappush +import sys + +input = sys.stdin.readline