#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 5;
const int oo = 0x3f3f3f3f;
inline long long read() {
  char ch = getchar();
  int x = 0, f = 1;
  while (ch > '9' || ch < '0') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
long long N, M, a[MAXN], b[MAXN], leftt, rightt, mid, ans, cnt, st, nd;
bool vis[MAXN];
namespace solution {
void init() {
  N = read();
  M = read();
  for (int i = 1; i <= N; i++) a[i] = read();
  for (int i = 1; i <= M; i++) b[i] = read();
  sort(a + 1, a + N + 1);
  sort(b + 1, b + M + 1);
}
bool check(long long length) {
  int t = 1;
  for (int i = 1; i <= M; i++) {
    st = b[i] - length;
    nd = b[i] + length;
    while (t <= N && a[t] >= st && a[t] <= nd) t++;
  }
  return t > N;
}
void slove() {
  leftt = 0;
  rightt = 2000000000;
  while (leftt + 1 < rightt) {
    mid = (leftt + rightt) >> 1;
    if (check(mid))
      rightt = mid;
    else
      leftt = mid;
  }
  if (check(leftt))
    ans = leftt;
  else
    ans = rightt;
}
void output() { cout << ans << endl; }
}  // namespace solution
int main() {
  using namespace solution;
  init();
  slove();
  output();
  return 0;
}
