#include <bits/stdc++.h>
using namespace std;
long long int fn(long long int x, long long int y, long long int z) {
  return ((x - y)) * ((x - y)) + ((y - z)) * ((y - z)) + ((x - z)) * ((x - z));
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int ts;
  cin >> ts;
  while (ts--) {
    int n[3];
    for (int i = 0; i < 3; i++) {
      cin >> n[i];
    }
    vector<long long int> v[3];
    for (int j = 0; j < 3; j++) {
      for (int i = 0; i < n[j]; i++) {
        long long int x;
        cin >> x;
        v[j].emplace_back(x);
      }
    }
    for (int i = 0; i < 3; i++) {
      sort(v[i].begin(), v[i].end());
    }
    long long int mn = fn(v[0][0], v[1][0], v[2][0]);
    for (int i = 0; i < n[0]; i++) {
      long long int x = v[0][i];
      long long int ypos =
          lower_bound(v[1].begin(), v[1].end(), x) - v[1].begin();
      long long int zpos =
          lower_bound(v[2].begin(), v[2].end(), x) - v[2].begin();
      ypos -= (ypos >= v[1].size());
      zpos -= (zpos >= v[2].size());
      long long int y = v[1][ypos];
      long long int z = v[2][zpos];
      mn = min(mn, fn(x, y, z));
      y = v[1][ypos - (ypos > 0)];
      z = v[2][zpos - (zpos > 0)];
      mn = min(mn, fn(x, y, z));
      y = v[1][ypos - (ypos > 0)];
      z = v[2][zpos];
      mn = min(mn, fn(x, y, z));
      y = v[1][ypos];
      z = v[2][zpos - (zpos > 0)];
      mn = min(mn, fn(x, y, z));
    }
    for (int i = 0; i < n[1]; i++) {
      long long int x = v[1][i];
      long long int ypos =
          lower_bound(v[0].begin(), v[0].end(), x) - v[0].begin();
      long long int zpos =
          lower_bound(v[2].begin(), v[2].end(), x) - v[2].begin();
      ypos -= (ypos >= v[0].size());
      zpos -= (zpos >= v[2].size());
      long long int y = v[0][ypos];
      long long int z = v[2][zpos];
      mn = min(mn, fn(x, y, z));
      y = v[0][ypos - (ypos > 0)];
      z = v[2][zpos - (zpos > 0)];
      mn = min(mn, fn(x, y, z));
      y = v[0][ypos - (ypos > 0)];
      z = v[2][zpos];
      mn = min(mn, fn(x, y, z));
      y = v[0][ypos];
      z = v[2][zpos - (zpos > 0)];
      mn = min(mn, fn(x, y, z));
    }
    for (int i = 0; i < n[2]; i++) {
      long long int x = v[2][i];
      long long int ypos =
          lower_bound(v[1].begin(), v[1].end(), x) - v[1].begin();
      long long int zpos =
          lower_bound(v[0].begin(), v[0].end(), x) - v[0].begin();
      ypos -= (ypos >= v[1].size());
      zpos -= (zpos >= v[0].size());
      long long int y = v[1][ypos];
      long long int z = v[0][zpos];
      mn = min(mn, fn(x, y, z));
      y = v[1][ypos - (ypos > 0)];
      z = v[0][zpos - (zpos > 0)];
      mn = min(mn, fn(x, y, z));
      y = v[1][ypos - (ypos > 0)];
      z = v[0][zpos];
      mn = min(mn, fn(x, y, z));
      y = v[1][ypos];
      z = v[0][zpos - (zpos > 0)];
      mn = min(mn, fn(x, y, z));
    }
    cout << mn << "\n";
  }
  return 0;
}
