#include #define rep(i,n) for(int i=0;i<(int)(n);i++) using namespace std; using ll = long long ; using P = pair ; using pll = pair; constexpr int INF = 1e9; constexpr long long LINF = 1e17; constexpr int MOD = 1000000007; constexpr double PI = 3.14159265358979323846; int main(){ ll n; cin >> n; vector a(n),b(n); rep(i,n) cin >> a[i] >> b[i]; vector one; rep(bit,1<<(n/2)){ ll aa = 0,bb = 0; rep(i,n/2){ if(bit>>i&1){ aa += a[i]; }else{ bb += b[i]; } } one.emplace_back(aa-bb); } vector two; rep(bit,1<<((n+1)/2)){ ll aa = 0,bb = 0; rep(i,(n+1)/2){ if(bit>>i&1){ aa += a[n/2+i]; }else{ bb += b[n/2+i]; } } two.emplace_back(aa-bb); } sort(two.begin(),two.end()); ll ans = LINF; rep(i,one.size()){ ll idx = lower_bound(two.begin(),two.end(),-one[i]) - two.begin(); if(idx==0) ans = min(ans, abs(one[i]+two[idx]) ); else if(idx==two.size()) ans = min(ans, abs(one[i]+two[idx-1]) ); else{ ans = min(ans, abs(one[i]+two[idx]) ); ans = min(ans, abs(one[i]+two[idx-1]) ); } } cout << ans << endl; return 0; }