#include using namespace std; using ll = long long; using ld = long double; #define rep(i,n) for(int i=0;i<(int)(n);i++) #define reps(i,s,n) for(int i=(int)(s);i<(int)(n);i++) #define allsort(v) sort(v.begin(),v.end()) const ll mod = 1e9 + 7; const ll INF = 1e9; int main() { cin.sync_with_stdio(false); int n; cin >> n; vectorA(n), B(n); vectordist(n); mapmp; rep(i, n) { cin >> A[i] >> B[i]; } queueque; que.push(0); reps(i, 1, n) { ll count = pow(2, i)/2; while (count) { ll x = que.front(); que.pop(); que.push(x + A[i - 1]); que.push(x - B[i - 1]); count--; } } ll ans = INF; ll count = pow(2, n)/2; while (count) { ll x = que.front(); que.pop(); ans = min(min(abs(x + A[n - 1]), abs(x - B[n - 1])),ans); count--; } cout << ans << endl; return 0; }