#include<bits/stdc++.h>
using namespace std;
#define fastIO ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define ll long long
#define MAX(a,b) (((b)>(a)) ? b : a )
#define MIN(a,b) (((a)<(b)) ? a : b)
#define endl "\n"
#define space " "
long long binarySearch(int key, int arr[], int s, int e)
{
while(s<=e)
{
int mid=(s+e)/2;
if (arr[mid]==key)
return mid;
else if (arr[mid]>key)
e=mid-1;
else
s=mid+1;
}
return -1;
//O(logn), O(1)
}
long long GCD(int a, int b)
{
// Everything divides 0
if (a == 0)
return b;
if (b == 0)
return a;
// base case
if (a == b)
return a;
// a is greater
if (a > b)
return GCD(a-b, b);
return GCD(a, b-a);
}
long long LCM(int a, int b)
{
return a*b/GCD(a,b);
}
//------------------------------------------------------------//
void solve()
{
int n,m;
cin>>n>>m;
int a[n];
int b[m];
map<ll,ll> mp; //value, freq
for(int i=0;i<n;i++)
{
cin>>a[i];
mp[a[i]]++;
}
for(int i=0;i<m;i++)
{
cin>>b[i];
}
for(int i=0;i<m;i++)
{
for(auto &x:mp)
{
if (x.second>0)
{
x.second--;
break;
}
}
mp[b[i]]++;
}
ll answer=0;
for(auto x:mp)
{
if (x.second>0)
{
answer=answer + x.first*x.second;
}
}
cout<<answer<<endl;
}
int main()
{
fastIO;
int t;
cin>>t;
while(t--)
{
solve();
}
}
1487A - Arena | 1520D - Same Differences |
376A - Lever | 1305A - Kuroni and the Gifts |
1609A - Divide and Multiply | 149B - Martian Clock |
205A - Little Elephant and Rozdil | 1609B - William the Vigilant |
978B - File Name | 1426B - Symmetric Matrix |
732B - Cormen --- The Best Friend Of a Man | 1369A - FashionabLee |
1474B - Different Divisors | 1632B - Roof Construction |
388A - Fox and Box Accumulation | 451A - Game With Sticks |
768A - Oath of the Night's Watch | 156C - Cipher |
545D - Queue | 459B - Pashmak and Flowers |
1538A - Stone Game | 1454C - Sequence Transformation |
165B - Burning Midnight Oil | 17A - Noldbach problem |
1350A - Orac and Factors | 1373A - Donut Shops |
26A - Almost Prime | 1656E - Equal Tree Sums |
1656B - Subtract Operation | 1656A - Good Pairs |