#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; template using pq = priority_queue, greater>; int main(){ int N, mx=0, c, ans=1e9, u, v; cin >> N; vector A(N), B(N); vector> C(N, vector(3)); pq> que; for (int i=0; i> A[i]; for (int i=0; i> B[i]; for (int i=0; i B[i]) swap(A[i], B[i]); C[i][0] = A[i]; C[i][1] = (A[i]+B[i])/2; C[i][2] = B[i]; que.push({A[i], i, u}); mx = max(mx, A[i]); } while(1){ tie(c, u, v) = que.top(); que.pop(); ans = min(ans, mx-c); if (v == 2) break; mx = max(mx, C[u][v+1]); que.push({C[u][v+1], u, v+1}); } cout << ans << endl; return 0; }