#include <bits/stdc++.h>
using namespace std;
void delbit(long long &a, long long k) { a &= (~(1 << k)); }
bool getbit(long long a, long long k) { return 1 & (a >> k); }
long long setbit(long long &a, long long k) { return a |= (1 << k); }
inline long long mulmod(long long x, long long n, long long _mod) {
  long long res = 0;
  while (n) {
    if (n & 1) res = (res + x) % _mod;
    x = (x + x) % _mod;
    n >>= 1;
  }
  return res;
}
inline long long powmod(long long x, long long n, long long _mod) {
  long long res = 1;
  while (n) {
    if (n & 1) res = (res * x) % _mod;
    x = (x * x) % _mod;
    n >>= 1;
  }
  return res;
}
inline long long gcd(long long a, long long b) {
  long long t;
  while (b) {
    a = a % b;
    t = a;
    a = b;
    b = t;
  }
  return a;
}
inline int gcd(int a, int b) {
  int t;
  while (b) {
    a = a % b;
    t = a;
    a = b;
    b = t;
  }
  return a;
}
inline long long lcm(long long a, long long b) { return a / gcd(a, b) * b; }
inline long long gcd(long long a, long long b, long long c) {
  return gcd(gcd(a, b), c);
}
inline int gcd(int a, int b, int c) { return gcd(gcd(a, b), c); }
double dist(double ax, double ay, double bx, double by) {
  return sqrt(((ax - bx) * (ax - bx)) + ((ay - by) * (ay - by)));
}
int a[101010], b[101010];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n, h;
  cin >> n >> h;
  for (int(i) = (0); (i) < (n); (i)++) cin >> a[i];
  for (int(i) = (0); (i) < (h); (i)++) cin >> b[i];
  long long l = -1, r = 2 * 1e9 + 10;
  while (r - l > 1) {
    long long m = (l + r) / 2;
    bool cur = 1;
    for (int(i) = (0); (i) < (n); (i)++) {
      int r1 = upper_bound(b, b + h, a[i] - m - 1) - b;
      if (r1 == h || abs(a[i] - b[r1]) > m) {
        cur = 0;
        break;
      }
    }
    if (cur)
      r = m;
    else
      l = m;
  }
  cout << r << endl;
  return 0;
}
