寻宝
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

\text{123hh2} 最近在玩《丸子与银河龙》,在这一章的剧情中:

丸子和阿尔可来到了一个神秘星球寻宝。这里有 n 种宝物,每种宝物的重量为 w_i ,价值为 v_i 。令她们兴奋的是,每种宝物都有 10^{18} 个!!!!!!

但是,为了妨碍她们寻宝,邪恶的阿斯塔录给这个星球施加了魔咒:每选择一次宝物 i ,所有该种宝物的价值就减少 1

丸子的背包容量只有 W ,她想知道她能获得的宝物的最大总价值,你可以帮帮她吗?
丸子和阿尔可来到了一个神秘星球寻宝。这里有 n 种宝物,每种宝物的重量为 w_i ,价值为 v_i 。令她们

兴奋的是,每种宝物都有 10^{18} 个!!!!!!

但是,为了妨碍她们寻宝,邪恶的阿斯塔录给这个星球施加了魔咒:每选择一次宝物 i ,所有该种宝物

的价值就减少 1

丸子的背包容量只有 W ,她想知道她能获得的宝物的最大总价值,你可以帮帮她吗?

输入描述:

输入共 n+1 行。

第一行包含两个用空格隔开整数 n,W(1\leqslant n,W\leqslant 3000),分别表示物品种类数和丸子的背包容量。

接下来的 n 行中,第 i+1 行表示第 i 种物品的信息,包含两个用空格隔开的整数 w_i,v_i(1\leqslant w_i\leqslant 3000,1\leqslant v_i\leqslant 10^9) ,分别表示第 i 种物品的重量和价值。

输出描述:

一行一个整数,表示丸子能获得的宝物的最大总价值。
示例1

输入

复制
2 10
3 5
2 4

输出

复制
16

说明

在第一个样例中,丸子可以装两件第一种宝物和两件第二种宝物,总价值为 16