打工人
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

Rolnan梦到自己成为了一个卡车司机,需要将 个箱子从仓库运送到码头,每个箱子都有自身的重量 ,以及目的地码头 。卡车每次运输有箱子数目的限制 和总重量的限制

具体的运输过程如下:
1. Rolnan必须按照箱子的顺序取出并处理箱子
1. 每次需要在仓库取出若干箱子,然后按照箱子所需要的目的地前往码头。
1. 当运输完一个箱子后,他需要前往下一个码头
1. 当运输完车上的所有箱子后,他需要回到仓库

注意,Rolnan必须按照箱子的顺序来处理,比如现在车上有三个箱子,依次需要送到 `1,2,1` 号码头,此时必须先去1号码头,再去2号码头,再返回1号码头,需要2个额外单位时间;但是如果是 `1,1,1`,那么Rolnan只需要一直在1号码头,不需要额外时间。

从仓库到任意码头,或任意码头之间所需要的时间为 1 个单位时间,不考虑卸货时间。

卡车在将所有箱子运输并卸货后,最后必须回到仓库。

请你帮助Rolnan计算将所有箱子送到相应码头的最短时间,这样他就能快速结束这个噩梦。

输入描述:

第一行三个整数 n,K,W

接下来 n 行,每行两个整数 p_i,w_i

输出描述:

输出一个整数,表示将所有箱子送到相应码头的最短时间
示例1

输入

复制
3 3 3
1 1
2 1
1 1

输出

复制
4