#include <bits/stdc++.h>
using namespace std;
priority_queue<int> q[110];
int main() {
  int n, t, x, y;
  scanf("%d%d", &n, &t);
  for (int i = 1; i <= n; i++) {
    scanf("%d%d", &x, &y);
    q[x].push(y);
  }
  int ans = 0;
  for (int i = 1; i <= t; i++) {
    while (!q[i - 1].empty()) {
      int u = q[i - 1].top();
      q[i - 1].pop();
      if (!q[i - 1].empty()) {
        u += q[i - 1].top();
        q[i - 1].pop();
      }
      q[i].push(u);
    }
    if (!q[i].empty()) ans = max(ans, q[i].top());
  }
  printf("%d\n", ans);
  return 0;
}
