#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 200005;
int a[N], f[N], d[N];
int t, n, m, k;
void solve(){
cin >> n >> m >> k;
int maxn1 = -1,maxn2 = -1,x,y,cnt = 0;
for(int i = 1; i <= n; i ++) cin >> a[i];
for(int i = 1; i <= m; i ++) cin >> d[i];
for(int i = 1; i <= k; i ++) cin >> f[i];
for(int i = 2; i <= n; i ++){
if(a[i] - a[i - 1] > maxn1){
maxn1 = a[i] - a[i - 1];
x = i - 1,y = i;
}
}
for(int i = 2; i <= n; i ++){
if(a[i] - a[i - 1] == maxn1) cnt ++;
}
if(cnt > 1){
cout << maxn1 << endl ;
return ;
}
int ans = 0;
sort(a + 1, a + n + 1);
sort(d + 1, d + m + 1);
sort(f + 1, f + k + 1);
for(int i = 1; i <= m; i ++){
int t = a[y] + a[x] >> 1;
int l = lower_bound(f + 1, f + k + 1, t - d[i]) - f,
r = upper_bound(f + 1, f + k + 1, t - d[i]) - f;
int q = 0;
if(l > 0 && l <= k && f[l] + d[i] <= a[y] && f[l] + d[i] >= a[x]){
if(ans == 0) {
ans = f[l] + d[i];
continue;
}
if(max(a[y] - f[l] - d[i],f[l] + d[i] - a[x]) < max(a[y] - ans,ans - a[x])) ans = f[l] + d[i];
}
l = r;
if(l > 0 && l <= k && f[l] + d[i] <= a[y] && f[l] + d[i] >= a[x]){
if(ans == 0) {
ans = f[l] + d[i];
continue;
}
if(max(a[y] - f[l] - d[i],f[l] + d[i] - a[x]) < max(a[y] - ans,ans - a[x])) ans = f[l] + d[i];
}
}
if(ans == 0){
cout << maxn1 << endl ;
return ;
}
a[++ n] = ans;
sort(a + 1, a + n + 1);
ans = -1;
for(int i = 2; i <= n; i ++){
ans = max(ans,a[i] - a[i - 1]);
}
cout << ans << endl ;
}
signed main(){
cin >> t;
while(t --) solve();
return 0;
}
悬关