#include <bits/stdc++.h>
using namespace std;
struct node {
  int v, ck, mn;
};
vector<node> vc;
bool fk(node x, node y) { return x.v < y.v; }
int main() {
  int n, m, i, k, j;
  scanf("%d %d", &n, &m);
  node nn;
  for (i = 0; i < n; i++) {
    scanf("%d", &k);
    nn.v = k;
    nn.ck = 0;
    nn.mn = 2000000009;
    vc.push_back(nn);
  }
  for (i = 0; i < m; i++) {
    scanf("%d", &k);
    nn.v = k;
    nn.ck = 1;
    nn.mn = 2000000009;
    vc.push_back(nn);
  }
  sort(vc.begin(), vc.end(), fk);
  for (i = 0; i < vc.size(); i++) {
    if (vc[i].ck) {
      vc[i].mn = 0;
      for (j = i - 1; j >= 0; j--) {
        if (vc[j].ck) break;
        vc[j].mn = min(vc[j].mn, vc[i].v - vc[j].v);
      }
      for (j = i + 1; j < vc.size(); j++) {
        if (vc[j].ck) break;
        vc[j].mn = min(vc[j].mn, vc[j].v - vc[i].v);
      }
    }
  }
  int ans = 0;
  for (i = 0; i < vc.size(); i++) {
    ans = max(ans, vc[i].mn);
  }
  cout << ans;
}
