func_code_string: #include <bits/stdc++.h>   using namespace std;   long long leftBinarySearch(long long* color, long long size, long long target) {     int l = 0;     int r = size - 1;     int idx = -1;     while (l <= r) {       int m = l + (r - l) / 2;       if (color[m] <= target) {         l = m + 1;         idx = m;       } else {         r = m - 1;       }     }     return idx;   }   long long rightBinarySearch(long long* color, long long size,                               long long target) {     int l = 0;     int r = size - 1;     int idx = -1;     while (l <= r) {       int m = l + (r - l) / 2;       if (color[m] >= target) {         r = m - 1;         idx = m;       } else {         l = m + 1;       }     }     return idx;   }   int main() {     int t;     cin >> t;     while (t--) {       long long r, g, b;       cin >> r >> g >> b;       long long red[r], green[g], blue[b];       for (int i = 0; i < r; i++) cin >> red[i];       for (int i = 0; i < g; i++) cin >> green[i];       for (int i = 0; i < b; i++) cin >> blue[i];       sort(red, red + r);       sort(green, green + g);       sort(blue, blue + b);       long long ans = LLONG_MAX;       long long left, right;       for (int i = 0; i < r; i++) {         left = leftBinarySearch(green, g, red[i]);         right = rightBinarySearch(blue, b, red[i]);         if (left != -1 and right != -1)           ans =               min(ans, (green[left] - blue[right]) * (green[left] - blue[right]) +                            (red[i] - green[left]) * (red[i] - green[left]) +                            (red[i] - blue[right]) * (red[i] - blue[right]));         left = leftBinarySearch(blue, b, red[i]);         right = rightBinarySearch(green, g, red[i]);         if (left != -1 and right != -1)           ans =               min(ans, (blue[left] - green[right]) * (blue[left] - green[right]) +                            (red[i] - blue[left]) * (red[i] - blue[left]) +                            (red[i] - green[right]) * (red[i] - green[right]));       }       for (int i = 0; i < g; i++) {         left = leftBinarySearch(red, r, green[i]);         right = rightBinarySearch(blue, b, green[i]);         if (left != -1 and right != -1)           ans = min(ans, (red[left] - blue[right]) * (red[left] - blue[right]) +                              (green[i] - red[left]) * (green[i] - red[left]) +                              (green[i] - blue[right]) * (green[i] - blue[right]));         left = leftBinarySearch(blue, b, green[i]);         right = rightBinarySearch(red, r, green[i]);         if (left != -1 and right != -1)           ans = min(ans, (blue[left] - red[right]) * (blue[left] - red[right]) +                              (green[i] - blue[left]) * (green[i] - blue[left]) +                              (green[i] - red[right]) * (green[i] - red[right]));       }       for (int i = 0; i < b; i++) {         left = leftBinarySearch(red, r, blue[i]);         right = rightBinarySearch(green, g, blue[i]);         if (left != -1 and right != -1)           ans = min(ans, (red[left] - green[right]) * (red[left] - green[right]) +                              (blue[i] - red[left]) * (blue[i] - red[left]) +                              (blue[i] - green[right]) * (blue[i] - green[right]));         left = leftBinarySearch(green, g, blue[i]);         right = rightBinarySearch(red, r, blue[i]);         if (left != -1 and right != -1)           ans = min(ans, (green[left] - red[right]) * (green[left] - red[right]) +                              (blue[i] - green[left]) * (blue[i] - green[left]) +                              (blue[i] - red[right]) * (blue[i] - red[right]));       }       cout << ans << endl;     }   }   