编程题
### 问题描述
城市图书馆决定对其藏书进行重新分类。他们决定使用希尔排序作为其分类方法的基础,但是有一些特殊的要求。
图书馆的每本书都有一个独特的 ID,范围为 $1$ 到 $N$。每本书还有一个权重值,表示其在库中的重要性。图书馆希望按照权重对书进行排序,但是他们希望保留希尔排序的某些特性。
他们的要求如下:
1. 使用希尔排序的增量序列:$\left\lfloor \frac{N}{2} \right\rfloor, \left\lfloor \frac{N}{4} \right\rfloor, ..., 1$。
2. 当两本书的权重相同时,书籍 ID 较小的书应该出现在前面。
你的任务是根据这些要求,为图书馆排序其藏书。
### 输入格式
第一行:一个整数 $N$,表示图书的数量。
接下来的 $N$ 行:每行两个整数,分别是书籍的 ID 和权重,题目保证每本书的 ID 都是唯一的。
### 输出格式
输出 $N$ 行,每行一个整数,按权重排序后的书籍 ID。
### 样例输入
```
5
1 10
2 20
3 20
4 15
5 10
```
### 样例输出
```
1
5
4
2
3
```
### 样例说明
在此示例中,两本权重为 $10$ 的书首先被排序,ID 较小的书在前。接下来是权重为 $15$ 的书,然后是两本权重为 $20$ 的书,其中 ID 较小的书在前。
### 测评数据规模
$1 \leq N \leq 10^5$,书籍的权重范围为 $[1,10^9]$。