通过梦境转移器,老师成功进入了编号最大的梦境。在那里,他遇到了 Seia。她的手上有 nn 份回忆,编号为 1,2,3,⋯,n1,2,3,⋯,n。其中每一份都包含了老师与学生们度过的最美好的时光。这些日常时光交织在一起,共同组成了一个充满了无数奇迹的世界。
老师给编号为 ii(1≤i≤n1≤i≤n)的回忆确定了它的 美好度 aiai。他想要按照某个顺序重温所有的回忆,也就是确定一个 [1,n][1,n] 的排列 pp 并依次重温编号为 p1,p2,p3,⋯,pnp1,p2,p3,⋯,pn 的回忆。
令 a0=p0=0a0=p0=0。老师对未来的 展望程度 可以用一个变量 SS 表示,初始时 S:=0S:=0。接下来在老师重温回忆的过程中,展望程度会根据美好度而发生变化。具体地,在老师重温编号为 pipi(1≤i≤n1≤i≤n)的回忆时:
Seia 通过某种方法得知了整数 x,y,zx,y,z 的值。她还知道老师喜欢美好,所以 x≥y≥zx≥y≥z。她想要帮助老师确定排列 pp,使得重温所有回忆后老师的展望程度最大。
Seia 瞥见了你,此时你或许在面对着一块电脑屏幕编写着代码,又或许是面对着一张草稿纸沉思。你或许正重温着以前某一次竞赛的试题,又或许对着一个极为重要的竞赛成绩感到懊恼。其实,她更建议你在竞赛结束后与你的同学们聊聊天,留意留意这个世界的某处角落,回忆回忆过去,展望展望未来。你可能在某一天突然发觉,竞赛的具体知识和最终结果变得不再重要,而那份美好的回忆才是你人生中无法抹去的奇迹。
现在,是时候将这个问题告诉你了,Seia 想道。你只需要告诉她展望程度的最大值。
本题包含多组测试数据。
来自 Seia 的温馨提示:本题输入输出量较大,对于使用 C++ 语言参加竞赛的选手,强烈建议使用关闭同步流的 cin 和 cout 完成输入输出。
首先在第一行输入一个整数 TT(1≤T≤1001≤T≤100)表示测试数据组数。
对于每一组测试数据,输入包含两行。
第一行包含四个整数 n,x,y,zn,x,y,z(1≤n≤∑n≤5×1061≤n≤∑n≤5×106,1≤z≤y≤x≤5×1061≤z≤y≤x≤5×106),表示回忆的数量和计算展望程度所需要的三个参数。
第二行包含 nn 个整数 a1,a2,a3,⋯,ana1,a2,a3,⋯,an(1≤a1,a2,a3,⋯,an≤n1≤a1,a2,a3,⋯,an≤n)表示回忆的美好度。
2
5 9 7 5
3 1 2 3 4
10 1919810 114514 1
2 3 5 9 10 10 2 2 5 4
43
15472995
在样例的第一组测试数据中,取 p1=2,p2=3,p3=1,p4=4,p5=5p1=2,p2=3,p3=1,p4=4,p5=5 时展望程度为 4343,达到最大值。具体地:
存在其他达到最大值的排列,在此仅列举其中一个。