#include using namespace std; #define rep(i, l, r) for (int i = (int)(l); i<(int)(r); i++) #define ll long long ll INF = 4e18; int main() { int N, M; cin >> N >> M; ll p = 0; vector> CD; rep(i, 0, N) { int c, d; cin >> c >> d; if (c == 0) p += d; CD.push_back({c, d}); } N = (int)CD.size(); sort(CD.rbegin(), CD.rend()); vector> dp(29); dp[0][0] = 0; rep(i, 0, N) { for (int j = 27; j >= 0; j--) { for (auto[key, val] : dp[j]) { // cout << i << " " << j << " " << key << " : " << val << endl; //選ぶ ll nkey = key + (1LL<