#include <bits/stdc++.h>
using namespace std;
int main() {
  int t;
  cin >> t;
  while (t--) {
    int n, k;
    cin >> n >> k;
    int a[n], w[k];
    vector<long long> dis[k];
    for (int i = 0; i < n; i++) cin >> a[i];
    for (int i = 0; i < k; i++) cin >> w[i];
    sort(a, a + n);
    sort(w, w + k);
    int j = n - 1;
    for (int i = 0; i < k; i++) {
      dis[i].push_back(a[j--]);
    }
    j = 0;
    for (int i = k - 1; i >= 0; i--) {
      for (int l = 0; l < w[i] - 1; l++) {
        dis[i].push_back(a[j++]);
      }
    }
    long long ans = 0;
    for (int i = 0; i < k; i++) {
      if (dis[i].size() == 1)
        ans += dis[i][0] * 2;
      else {
        ans += dis[i][0];
        ans += dis[i][1];
      }
    }
    cout << ans << endl;
  }
  return 0;
}
