#include <bits/stdc++.h> #define debug(a) cout<<#a<<"="<<a<<"\n" #define EPS 1e-8 #define IOS ios::sync_with_stdio(0),cin.tie(0) #define all(v) v.begin(),v.end() using namespace std; using i64 = long long; using ull = unsigned long long; using pi = pair<int,int>; using pl = pair<long long,long long>; static constexpr int ALPHABET_SIZE = 26; static constexpr int N = 1000000 + 5; static constexpr int MOD = 998244353;
void merge(auto& m, i64 num, i64 cnt) { i64 pow2 = 2; for (int i = 1; i <= 30; i++) { if (cnt >> i & 1) { m[num * pow2]++; m[num] -= pow2; } pow2 *= 2; } }
void solve() { //可以把两个相同的数x, 变为一个数2x //问最少能把给定的n个数减为多少个数 //直接全和了, 排序 int n; cin >> n; map<i64, i64> m; for (int i = 0; i < n; i++) { i64 num, cnt; cin >> num >> cnt; m[num] += cnt; } i64 res = 0; for (auto& [k, v]: m) { merge(m, k, v); res += v; } cout << res; } int main() { IOS; int t = 1; // cin >> t; while(t--) { solve(); } return 0; }