#codefestivalchinah. [code_festival_china_h]Dungeon

[code_festival_china_h]Dungeon

问题

你正在玩一个视频游戏。在这个游戏中,有一个地牢,地牢上有 N+2N + 2 个房间,排列在直线上。每个房间按顺序从 00N+1N+1 编号。你可以从一个房间移动到相邻的房间。你现在在第 00 号房间。你的目标是以最少的伤害到达第 (N+1)(N + 1) 号房间。

00 号和第 (N+1)(N + 1) 号房间都是空房间。在第 11 到第 NN 号房间中的每个房间里都有一个物品或者一个怪物。你被给定了 NN 对整数,分别表示每个房间的内容。对于每个 ii (1iN1 \leq i \leq N),整数 AiA_iBiB_i 的含义如下。

  • Ai=0A_i = 0 时,在第 ii 号房间中放置了一个带有陷阱的钥匙。如果你拿起那把钥匙,你会受到陷阱造成的 BiB_i 点伤害。你可以选择不拿起钥匙,在这种情况下你不会受到伤害。
  • Ai=1A_i = 1 时,在第 ii 号房间中有一个宝箱。在宝箱中有一个水晶,可以增加你的防御参数 BiB_i 点。你可以消耗 11 把钥匙打开宝箱并增加你的防御。你可以选择不打开宝箱,在这种情况下你不会消耗钥匙,保持你的防御参数不变。你的初始防御参数为 00
  • Ai=2A_i = 2 时,第 ii 号房间里有一个怪物。当你首次进入该房间时,你必须与那个怪物战斗,并受到 Bi(此时玩家的防御值)B_i - (\rm{此时玩家的防御值}) 点伤害。当你再次访问该房间时,房间里没有怪物,你不会受到伤害。

你从第 00 号房间开始。计算你到达第 (N+1)(N + 1) 号房间所受到的最少伤害。

请注意,你可以返回已经访问过的房间,而且陷阱造成的伤害不能通过你的防御参数减少。


输入

NN A1A_1 B1B_1 A2A_2 B2B_2 : ANA_N BNB_N

  • 第一行,给出一个整数 NN (1N9001 \leq N \leq 900),表示地牢中的房间数为 N+2N + 2
  • 在接下来的 NN 行中,给出两个整数 AiA_i (0Ai20 \leq A_i \leq 2) 和 BiB_i (0Bi1090 \leq B_i \leq 10^9),用空格分隔,表示每个房间的信息。第 ii 行表示第 ii 号房间的内容。这些信息满足以下条件。
    • 每种房间的数量都不超过 300300
    • 即使你获得了地牢中的所有水晶,从怪物那里受到的伤害也不会少于 00。也就是说,设 XX 是满足 Ai=1A_i = 1 的所有 ii 对应的 BiB_i 的和。对于任何满足 Aj=2A_j = 2jj,有 BjXB_j \geq X

输出

输出一行,包含到达第 (N+1)(N + 1) 号房间所受到的最少伤害。确保在输出末尾插入一个换行符。


输入示例 1


4
1 2
2 3
0 1
2 2

输出示例 1


4

最佳移动路径如下:

  • 首先去到第 33 号房间并拿起钥匙。在途中,你从第 22 号房间的怪物受到 33 点伤害,并且从第 33 号房间的陷阱受到 11 点伤害。
  • 接下来,返回第 11 号房间,打开宝箱,将你的防御值增加 22 点。在这个过程中,你经过了第 22 号房间,但你已经击败了怪物,所以你不会受到伤害。
  • 最后去到目标,第 55 号房间。在这个过程中,你与第 44 号房间的怪物战斗,但由于你的 22 点防御参数,你不会受到伤害。

输入示例 2


4
1 2
2 3
0 4
2 2

输出示例 2


5

这个案例与示例 1 类似,但是陷阱造成的伤害很大,所以最佳移动是忽略钥匙。


输入示例 3


7
0 4
1 3
2 10
1 6
2 9
0 5
2 10

输出示例 3


21