
#include <bits/stdc++.h>

using namespace std;

const int N = 1e6+10;

typedef long long ll;

//注意有些int类型要改成long long类型 

vector<int> ve[N]; //vector最好定义在外面，不然可能爆栈

int main(){

//	freopen("input.txt","r",stdin); 

	int n,m;

	cin>>n>>m;

	int a,b;

	priority_queue<int> q;

	ll earn=0;

	for(int i=0;i<n;i++)

	{

		scanf("%d%d",&a,&b);

		if(a>m) continue; //要有这个条件，不然下面的vector可能会成负值

		ve[m-a+1].push_back(b); //表示只能在m-a+1天或者之前做，不然在假期内完不成这项任务

	}

	for(int i=m;i>=1;i--)

	{

		for(int v:ve[i]) q.push(v);

		if(!q.empty())

		{

			earn+=q.top();

			q.pop();			

		}

	}

	cout<<earn<<endl;

	return 0;

}
