#include <bits/stdc++.h>
using namespace std;
int main() {
  int a, b, f, con, maxi = 0, u, ge;
  scanf("%d %d", &a, &b);
  vector<pair<int, pair<int, int> > > p;
  for (int i = 0; i < a; i++) {
    scanf("%d", &f);
    p.push_back(make_pair(f, make_pair(1, 2000000002)));
  }
  for (int i = 0; i < b; i++) {
    scanf("%d", &f);
    p.push_back(make_pair(f, make_pair(0, 2000000002)));
  }
  sort(p.begin(), p.end());
  bool ft = false;
  for (int i = 0; i < p.size(); i++) {
    if ((!ft) && (p[i].second.first == 0)) {
      ft = true;
      con = p[i].first;
      continue;
    }
    if (ft && (p[i].second.first == 0)) {
      con = p[i].first;
    }
    if (ft && (p[i].second.first == 1)) {
      p[i].second.second = min(p[i].second.second, p[i].first - con);
    }
  }
  ft = false;
  for (int i = p.size() - 1; i >= 0; i--) {
    if ((!ft) && (p[i].second.first == 0)) {
      ft = true;
      con = p[i].first;
      continue;
    }
    if (ft && (p[i].second.first == 0)) {
      con = p[i].first;
    }
    if (ft && (p[i].second.first == 1)) {
      p[i].second.second = min(p[i].second.second, con - p[i].first);
    }
  }
  maxi = 0;
  for (int i = 0; i < p.size(); i++) {
    if (p[i].second.first == 1) maxi = max(maxi, p[i].second.second);
  }
  printf("%d\n", maxi);
}
