Problem:
Score : 200 points

Problem Statement

There are N gems. The value of the i-th gem is V_i.

You will choose some of these gems, possibly all or none, and get them.

However, you need to pay a cost of C_i to get the i-th gem.

Let X be the sum of the values of the gems obtained, and Y be the sum of the costs paid.

Find the maximum possible value of X-Y.

Constraints

All values in input are integers.

1 \leq N \leq 20

1 \leq C_i, V_i \leq 50

Input

Input is given from Standard Input in the following format:

N
V_1 V_2 ... V_N
C_1 C_2 ... C_N

Output

Print the maximum possible value of X-Y.

Sample Input 1

3
10 2 5
6 3 4

Sample Output 1

5

If we choose the first and third gems, X = 10 + 5 = 15 and Y = 6 + 4 = 10.
We have X-Y = 5 here, which is the maximum possible value.

Sample Input 2

4
13 21 6 19
11 30 6 15

Sample Output 2

6

Sample Input 3

1
1
50

Sample Output 3

0

Solution in C++14 (GCC 5.4.1) (judge verdict: Accepted)

// #pragma GCC optimize ("O3")
#include <bits/stdc++.h>
// #include <ext/pb_ds/tree_policy.hpp>
// #include <ext/pb_ds/assoc_container.hpp>

using namespace std;
// using namespace __gnu_pbds;
// using namespace __gnu_cxx;
 
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pi;
typedef pair<ll,ll> pl;
typedef pair<ld,ld> pd;

// #define oset tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> 

#define mp make_pair
#define pb push_back
#define f first
#define s second
#define lb lower_bound
#define ub upper_bound

#define sz(x) (int)x.size()
#define beg(x) x.begin()
#define en(x) x.end()
#define all(x) beg(x), en(x)
#define zero(a) memset(a,0,sizeof(a))

// #define int ll

const ll INF = 1e18;
const ld PI = 4*atan((ld)1);
const int MOD = 1000000007; // 998244353

int n;
vector<int> v(22),c(22);

ll ans;

void solve(int pos,ll val){
	if(pos==n) ans = max(ans,val);
	else{
		for(int i=0;i<2;i++){
			solve(pos+1,val+i*v[pos]-i*c[pos]);
		}
	}
	return ;
}

int main(){
	ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	cin >> n;
	for(int i=0;i<n;i++) cin >> v[i];
	for(int i=0;i<n;i++) cin >> c[i];
	ans = 0;
	solve(0,0);
	cout << ans << endl;
	return 0;
}