#include <bits/stdc++.h>
using namespace std;
bool f(const vector<int> &a, const vector<int> &b) {
  return a.size() > b.size();
}
bool g(int a, int b) { return (a > b); }
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int n, m;
  cin >> n >> m;
  vector<vector<int>> v(m + 1);
  for (int i = 0; i < n; i++) {
    int a, b;
    cin >> a >> b;
    v[a].push_back(b);
  }
  for (int i = 1; i <= m; i++) {
    sort(v[i].begin(), v[i].end(), g);
  }
  for (int i = 1; i <= m; i++) {
    for (int j = 1; j < v[i].size(); j++) {
      v[i][j] += v[i][j - 1];
    }
  }
  sort(v.begin(), v.end(), f);
  int ans = INT_MIN;
  for (int i = 0; i < v[0].size(); i++) {
    int s = 0;
    for (int j = 0; j <= m - 1; j++) {
      if ((int)v[j].size() < i + 1) break;
      if (v[j][i] >= 0) s += v[j][i];
    }
    ans = max(ans, s);
  }
  if (ans == INT_MIN)
    cout << 0;
  else
    cout << ans;
}
