//#include <bits/stdc++.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>

using namespace std;

const int maxn=1e5+10;
const int inf=0x3f3f3f3f;

vector<int> ve[maxn];

int main()
{
//	freopen("input.txt","r",stdin);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	int n,k;
	cin>>n>>k;
	int a,b;
	for(int i=0;i<n;i++) 
	{
		cin>>a>>b;
		if(a>k) continue;
		ve[k-a+1].push_back(b);
	}
	priority_queue<int> q;
	int earn=0;
	for(int i=k;i>=1;i--)
	{
		for(int v:ve[i]) q.push(v);
		if(!q.empty())
		{
			earn+=q.top();
			q.pop();
		}
	}
	cout<<earn;
	
	
	return 0;
 } 
 
 //以相同天数，但权值最大的数先挑选。
 //为什么是k-a+1天之前？	 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 