#include <bits/stdc++.h>
using namespace std;
long long ans = 0;
long long dd(long long x, long long y, long long z) {
  return (x - y) * (x - y) + (y - z) * (y - z) + (z - x) * (z - x);
}
void gao(const vector<int>& vr, const vector<int>& vg, const vector<int>& vb,
         int r, int g, int b) {
  for (auto v : vr) {
    auto it = lower_bound(vg.begin(), vg.end(), v);
    if (it != vg.end()) {
      int v2 = *it;
      auto it3 = lower_bound(vb.begin(), vb.end(), (v + v2) / 2);
      if (it3 != vb.end()) ans = min(ans, dd(v, v2, *it3));
      if (it3 != vb.begin()) ans = min(ans, dd(v, v2, *(--it3)));
    }
    if (it != vg.begin()) {
      int v2 = *(--it);
      auto it3 = lower_bound(vb.begin(), vb.end(), (v + v2) / 2);
      if (it3 != vb.end()) ans = min(ans, dd(v, v2, *it3));
      if (it3 != vb.begin()) ans = min(ans, dd(v, v2, *(--it3)));
    }
  }
}
void solve() {
  ans = 9e18;
  int r, g, b;
  scanf("%d%d%d", &r, &g, &b);
  vector<int> vr(r), vg(g), vb(b);
  for (int i = 0; i < r; ++i) scanf("%d", &vr[i]);
  for (int i = 0; i < g; ++i) scanf("%d", &vg[i]);
  for (int i = 0; i < b; ++i) scanf("%d", &vb[i]);
  sort(vr.begin(), vr.end());
  sort(vg.begin(), vg.end());
  sort(vb.begin(), vb.end());
  gao(vr, vg, vb, r, g, b);
  gao(vr, vb, vg, r, b, g);
  gao(vb, vr, vg, b, r, g);
  gao(vb, vg, vr, b, g, r);
  gao(vg, vr, vb, g, r, b);
  gao(vg, vb, vr, g, b, r);
  printf("%lld\n", ans);
}
int main() {
  int T;
  scanf("%d", &T);
  while (T--) solve();
  return 0;
}
