#include <bits/stdc++.h>
using namespace std;
#define int long long
const int INF = 1e9;
int n;
vector<int> a(600005), b(300005), c(300005);
int get_first(int le, int ri, int val)
{
for(int i=le;i<=ri;i++)
if(a[i] > val)
return i;
return ri + 1;
}
int get_first_rev(int le, int ri, int val)
{
for(int i=ri;i>=le;i--)
if(a[i] > val)
return i;
return le - 1;
}
int verif_BC()
{
int rez = INF;
for(int s=1;s<=n;s++)
{
vector<int> forB, forC;
for(int u=s;u<=s+n-1;u++)
forB.push_back(a[u]);
for(int u=1;u<s;u++)
forC.push_back(a[u]);
for(int u=s+n;u<=2*n;u++)
forC.push_back(a[u]);
sort(forB.begin(), forB.end());
sort(forC.begin(), forC.end());
int mxm = 0;
for(int i=1;i<=n;i++)
{
mxm = max(mxm, abs(b[i] - forB[i-1]));
mxm = max(mxm, abs(c[i] - forC[i-1]));
}
rez = min(rez, mxm);
}
return rez;
}
signed main()
{
cin>>n;
for(int i=1;i<=2*n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
cin>>b[i];
for(int i=1;i<=n;i++)
cin>>c[i];
sort(b.begin()+1, b.begin()+1+n);
sort(c.begin()+1, c.begin()+1+n);
/*int st=0,dr=INF,ans=-1;
while(st<=dr)
{
int mij = (st + dr) / 2;
if(verif(mij))
{
ans = mij;
dr = mij - 1;
}
else
st = mij + 1;
}
assert(ans != -1);
cout<<ans;*/
int rez = INF;
rez = min(rez, verif_BC());
swap(b,c);
rez = min(rez, verif_BC());
cout<<rez;
return 0;
}