漫步大地的游医
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

漫步大地的游医,以冒险家的热情搜罗着珍稀药材。 在险峻的山崖上,湿滑的岩石间,她发现一株银莲。 到最后,药始终没派上用场,花香却一直鼓舞着她。


从前有位漫步大地的游医,她总是穿越无垠的草原、翻越巍峨的山脉,寻找那些世间稀有的珍贵药材。在她的背篓中,每一株药材都拥有独一无二的编号和功效值 v 紧密相连。具体来说:编号为 1 的药材功效为 v_1,编号为 2 的药材功效为 v_2,直到编号为 m 的药材,它的功效为 v_m


一次,游医漫步至小楠所在的村落,并决定整理她的背篓。她手中只有 n 个药材,每个药材分别有一个编号 a_i。但是由于背篓容量的限制,她决定只携带恰好 k 个药材以减轻重量,但是在如何选择上犯了难,于是她寻求聪明的小楠来帮助她。


每种药材的总功效和数量息息相关,为了能拯救更多的生命,她希望能携带可能的最大功效的药材。记 c_i 为携带恰好 k 个药材时编号为 i 的药材出现的次数,药材的功效可以通过以下公式计算:


\sum_{i=1}^{m} \left \lfloor \log_2 (c_i+1) \right \rfloor \times v_i


作为小楠的好朋友,你决定帮助游医计算携带恰好 k 个药材时所能获得的最大功效。


形式化的,给定一个可重集 A=\{ a_1,a_2,a_3,\dots,a_n \} 和一个数组 V,你需要选择其中恰好 k 个元素组成新的可重集 B=\{ b_1,b_2,b_3,\dots,b_k \}B \subseteq A。定义 c_ii 在集合 B 中的出现次数,使得上述表达式所得出的结果最大。

输入描述:

第一行输入三个正整数 n,m,k \ (1 \leq n,m \leq 2 \times 10^3,1 \leq k \leq n),表示游医拥有的药材数量、药材编号范围和恰好选择的药材数量。


第二行输入 n 个整数 a_1,a_2,\dots,a_n \ (1 \leq a_i \leq m),分别表示游医现有的第 i 个药材的编号。


第三行输入 m 个正整数 v_1,v_2,\dots,v_m \ (1 \leq v_i \leq 10^6),分别表示第 i 种药材的功效。

输出描述:

输出一行一个整数,表示携带恰好 k 个药材时能够获得的最大总功效

示例1

输入

复制
6 3 4
2 1 1 1 3 3
2 9 1

输出

复制
13

说明

选择 \{2,1,1,1\} 携带。由于 1 出现了 3 次,则它的功效为 \left \lfloor \log_2 (3+1) \right \rfloor \times 2 = 4,由于 2 出现了 1 次,则它的功效为 \left \lfloor \log_2 (1+1) \right\rfloor \times 9 = 9,所以最大总功效为 9+4=13