OneTrunKill
题号:NC204247
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 64 M,其他语言128 M
64bit IO Format: %lld

题目描述

Reverie在玩一款回合制卡牌游戏,双方玩家需要操控自己的式神战斗。
现在Reverie场上有2个式神,每个式神都有自己的若干种卡牌,如无特殊说明,使用一张卡牌需要一点鬼火。
式神有攻击力属性,普通攻击消耗一点鬼火,每回合所有式神总共只有一次普通攻击机会。
回合开始时有总共有两点鬼火。
卡牌分为形态牌和战斗牌。
形态牌会覆盖式神的攻击并增加新的效果。
战斗牌会临时增加式神攻击并使其战斗。
手牌中的卡牌可以直接使用,卡组中的卡牌需要加入到手牌才能使用。抽卡时,按照顺序从卡组中抽取一张加入手牌。
瞬发:每回合使用的第一张瞬发牌不消耗鬼火。
鼓舞:特殊的攻击加成,式神普通攻击时附加且清零。

妖刀姬(攻击3):妖刀姬对敌方牌手造成伤害时,她的战斗牌本回合获得瞬发。
1. 见切(附加1点攻击):战斗。
2. 战意(附加2点攻击):战斗。

萤草(攻击2):萤草的形态牌获得瞬发且使用时抽一张牌。
3. 勇气之光(攻击3):形态。使用时,鼓舞:获得2点攻击。
4.安魂之光(攻击3):形态。使用时,获得1点鬼火。 

现在给出手牌和卡组剩余卡牌,你能计算出本回合最多能对敌方玩家造成的多少伤害吗?

输入描述:

第一行一个正整数T,表示测试的组数。
每组数据第一行两个正整数n,m,分别表示手牌数量,卡组剩余卡牌数量。
之后一行n个正整数,表示手牌编号。
之后一行m个整数,表示卡组剩余卡牌编号。

输出描述:

每组数据,一行内输出一个整数表示答案。

示例1

输入

复制
1
1 1
3
1

输出

复制
9

说明

手牌:勇气之光
卡组:见切
萤草使用勇气之光,瞬发,不消耗鬼火,鼓舞+2,抽到见切
妖刀姬攻击,消耗1点鬼火,造成3+2=5点伤害
妖刀姬使用见切,消耗1点鬼火,造成4点伤害