#include <bits/stdc++.h>
using namespace std;
long long a, b, c, n, m, k = 0, T, x[100010], y[100010], dp[100010],
                         head[100010], maxx = -0x3f3f3f3f;
struct node {
  long long u, v, Next;
} t[2 * 100010];
void add(long long u, long long v) {
  t[++k].v = v;
  t[k].Next = head[u];
  head[u] = k;
}
int main() {
  scanf("%lld%lld", &n, &m);
  for (long long i = 1; i <= n; i++) scanf("%lld", &x[i]);
  for (long long i = 1; i <= m; i++) scanf("%lld", &y[i]);
  y[m + 1] = 0x3f3f3f3f3f3f3f3f;
  y[0] = -0x3f3f3f3f3f3f3f3f;
  for (long long i = 1; i <= n; i++) {
    a = lower_bound(y + 1, y + 1 + m, x[i]) - y;
    maxx = max(maxx, min(abs(x[i] - y[a]), abs(x[i] - y[a - 1])));
  }
  cout << maxx;
}
