#include using namespace std; using ll = long long; using lll = __int128; template using vc = vector; using vi = vc; using vl = vc; template using vv = vc>; using vvi = vv; using vvl = vv; using vs = vc; using P = pair; const int INF = 1e9; const ll INF_ll = 1LL << 60; vl dx = {1, 0, -1, 0}; // vl dx = {1,1,0,-1,-1,-1,0,1}; vl dy = {0, 1, 0, -1}; // vl dx = {0,1,1,1,0,-1,-1,-1}; using ld = long double; #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define rep1(i, n) for (int i = 1; i <= (int)(n); i++) #define drep(i, n) for (int i = (int)(n)-1; i >= 0; i--) #define drep1(i, n) for (int i = (int)(n); i >= 1; i--) #define nfor(i, s, n) for (ll i = s; i < (ll)(n); i++) // i=s,s+1...n-1 ノーマルfor #define dfor(i, s, n) for (ll i = (s)-1; i >= (ll)(n); i--) // s-1スタートでnまで落ちる #define fore(c, s) for (auto c : s) // for_each #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() #define chmax(x, y) x = max(x, y) #define chmin(x, y) x = min(x, y) #define YES cout << "Yes" << endl #define NO cout << "No" << endl #define YN \ { cout << "Yes" << endl; } \ else { \ cout << "No" << endl; \ } #define dame cout << -1 << endl #define vc_unique(v) v.erase(unique(v.begin(), v.end()), v.end()); bool out_grid(ll i, ll j, ll h, ll w) { // trueならcontinueする return (!(0 <= i && i < h && 0 <= j && j < w)); } ll nc2(ll x) { return x * (x - 1) / 2; } ll nc3(ll x) { return x * (x - 1) * (x - 2) / 6; } // const int mint = 998244353; // const int mint = 1000000007; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N, M; cin >> N >> M; vl S(N), T(M); set st; rep(i, N) { cin >> S[i]; st.insert(S[i]); } rep(i, M) cin >> T[i]; sort(all(S)); sort(all(T)); vl ans; ans.emplace_back(0); rep(i, M) { auto it = st.lower_bound(T[i]); if (it == st.end()) continue; ans.emplace_back(*it - T[i]); st.erase(it); } cout << *max_element(all(ans)) << endl; return 0; }