编程题
### 问题描述
在浩浩的魔法世界中,有 $ N $ 种不同类型的魔法石,每种类型的魔法石有一个独特的大小。第 $ i $ 种类型的魔法石的大小为 $ S_i $,并且初始时浩浩有 $ C_i $ 块这种大小的魔法石。
浩浩可以通过魔法进行任意次数的魔法石合成,以减少魔法石的总数。每次合成的过程如下:
- 选择两块大小相同的魔法石,大小为 $ X $,合成后会得到一块大小为 $ 2X $ 的新魔法石,并且原来的两块魔法石消失。
浩浩的目标是通过合成,使得最终的魔法石数量尽可能少。请问通过优化合成顺序后,浩浩能得到的最小魔法石数量是多少?
### 输入格式
第一行包含一个整数 $ N $,表示不同类型的魔法石的数量。
接下来的 $ N $ 行,每行包含两个整数 $ S_i $ 和 $ C_i $,分别表示第 $ i $ 种魔法石的大小和数量。
### 输出格式
输出通过合成后能得到的最小魔法石数量。
### 样例输入
```
3
3 3
5 1
6 1
```
### 样例输出
```
3
```
### 评测数据规模
- $ 1 \leq N \leq 10^5 $
- $ 1 \leq S_i \leq 10^9 $
- $ 1 \leq C_i \leq 10^9 $
- 所有的 $ S_i $ 互不相同。
- 所有输入值为整数。