#include<cstdio>#include<algorithm>#include<cstring>#include<cctype>#include<vector>usingnamespace std;inlineintread(){int x =0, op =1;char ch =getchar();while(!isdigit(ch)){if(ch =='-') op =-1; ch =getchar();}while(isdigit(ch)){
x =(x <<1)+(x <<3)+(ch ^48);
ch =getchar();}return x * op;}inlinevoidwrite(int x){if(x <0)putchar('-'), x =- x;if(x >9)write(x /10);putchar('0'+ x %10);}voidsolve(){int n =read(), m =read();
vector<int>num(n);
vector<int>cost(m);for(int&e : num) e =read();for(int& c: cost) c =read();
cost.push_back(2e9);sort(num.rbegin(), num.rend());int index =0;longlong res =0;for(int i =0; i < n;++i){if(index <= num[i]-1&& cost[index]< cost[num[i]-1]){
res += cost[index++];}else{
res += cost[num[i]-1];}}printf("%lld\n", res);}signedmain(){int cases =read();while(cases--){solve();}return0;}