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

题目描述

小红在一个rpg游戏准备去击杀boss。已知小红一共有 n 种技能,每种技能拥有一种属性(冰、火、雷中的一种),并且有一个伤害。每种技能只能释放一次。
已知一个技能对boss释放时,会有以下三种情况:
1. 如果boss目前没有任何属性,则为boss附上该技能的属性。技能的伤害不变。
2. 如果boss目前被附上的属性和技能的属性相同,那么被附上的层数加1。技能的伤害不变。
3. 如果boss目前被附上的属性和技能的属性不同,那么消耗一层boss被附上的属性,并且该技能伤害翻倍。

已知boss初始没有被附上任何属性。小红可以自由安排技能的释放顺序,她希望最终对boss的伤害最大化。请你帮小红设计一个技能释放次序。

输入描述:

第一行输入一个正整数 n ,代表小红拥有的技能数量。
接下来的 n 行,每行输入一个字符串 str 和一个正整数a_i,代表每个技能的属性和伤害。


str 保证是 "ice" 、 "fire" 、 "thunder"中的一种。

输出描述:

输出一个正整数,代表小红对boss能造成的最大伤害。
示例1

输入

复制
5
fire 3
thunder 2
ice 5
fire 4
thunder 3

输出

复制
26

说明

按照 2 3 5 4 1 的攻击顺序,总伤害为 2+5*2+3+4*2+3=26