#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int Mod=998244353;

 bool f(int mid, vector<int> &a , vector<int> &b){
  int cnt=0;
  for(int i=0;i<a.size();i++){
  	if(cnt==0){
    if(a[i]>b[cnt]+mid && a[i]<b[cnt]-mid) return false;
     cnt++;
  }
   else{
   	if(a[i]>b[cnt-1]+mid && a[i]>b[cnt]+mid && a[i]<b[cnt]-mid) return false;
   	if(cnt<b.size()-1) cnt++;
   }
  }
  return true;
 }

void solve() {

   int n,m;
   cin >> n >> m;
   vector<int> cities(n),towers(m);
   for(int i=0;i<n;i++) cin >> cities[i];
   for(int i=0;i<m;i++) cin >> towers[i];
   
   if(m==1){
   	cout << max(abs(cities[0]-towers[0]),abs(cities[n-1]-towers[0]));
   	return;
   }

    int low =0;
    int ans =low;
    int high=max(abs(towers[m-1]-cities[0]),abs(cities[m-1]-towers[0]));
    while(low<=high){
      int mid = (low+high)/2;
      if(f(mid,towers,cities)){
        ans =mid;
        high=mid-1;
      }
      else 
       low=mid+1;
    }

    cout << ans << '\n';
}

int main(){ 
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
	
    /*int t;
    cin >> t;
    while (t--)*/ solve();
    

    return 0;
}
