#include using namespace std; int main() { int N, M; cin >> N >> M; vector T(M); int S; multiset st; for (int i = 0; i < N; ++i) { cin >> S; st.insert(S); } st.insert(2e9 + 10); int finish = 0; multiset st2 = st; for (int i = 0; i < M; ++i) { cin >> T[i]; auto itr = st.lower_bound(T[i]); if (*itr == 2e9 + 10) break; st.erase(itr); finish++; } if (finish == 0) { cout << 0 << endl; return 0; } int l = 0, r = 1e9; int md; while (r - l > 1) { md = (l + r) / 2; st = st2; bool check = true; for (int i = 0; i < finish; ++i) { auto itr = st.lower_bound(T[i] + md); if (*itr == 2e9 + 10) { check = false; break; } st.erase(itr); } if (check) l = md; else r = md; } cout << l << endl; return 0; }