#include <bits/stdc++.h>
using namespace std;
const int maxN = 5e3 + 5;
long long seg[2 * maxN];
int n;
void upd(int ind, long long x) {
  ind--;
  for (seg[ind += n] = x; ind > 1; ind >>= 1)
    seg[ind >> 1] = max(seg[ind], seg[ind ^ 1]);
}
long long qry(int l, int r) {
  --l;
  long long res = -1e18;
  for (l += n, r += n; l < r; l >>= 1, r >>= 1) {
    if (l & 1) {
      res = max(res, seg[l]);
      l++;
    }
    if (r & 1) {
      --r;
      res = max(res, seg[r]);
    }
  }
  return res;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int t;
  cin >> t;
  while (t--) {
    cin >> n;
    int tag[n], s[n];
    for (int i = 0; i < n; i++) {
      cin >> tag[i];
    }
    for (int i = 0; i < n; i++) {
      cin >> s[i];
    }
    vector<long long> dp(n, 0);
    for (int i = 1; i < n; i++) {
      vector<long long> curr(n, 0);
      for (int j = i - 1; j >= 0; j--) {
        if (tag[i] != tag[j]) curr[j] = dp[j] + abs(s[i] - s[j]);
      }
      for (int j = 1; j < i; j++) {
        upd(j, curr[j]);
      }
      for (int j = 0; j < i; j++) {
        if (tag[i] != tag[j])
          dp[j] = max(dp[j], qry(j + 1, i) + abs(s[i] - s[j]));
      }
      dp[i] = *max_element(curr.begin(), curr.end());
    }
    cout << *max_element(dp.begin(), dp.end()) << '\n';
  }
}
