#include <iostream>
#include <cstring>
using namespace std;
long long n, ans, mx, a[55], b[55], v[55];

int f() {
	int i, j, k, x[55];
	for(i=0; i<n; i++) {
		memset(x, 0, sizeof(x));
		x[a[i]] = 1;
		for(j=a[i]; j>b[i]; j--) if(x[j]) {
			for(k=1; k<=j; k++) if(v[k]) x[j%k] = 1;
		}
		if(!x[b[i]]) return 0;
	}
	return 1;
}

int main(){
	int i;
	cin>>n;
	for(i=0; i<n; i++) cin>>a[i], mx = max(mx, a[i]);
	for(i=0; i<n; i++) cin>>b[i];
	for(i=1; i<=mx; i++) v[i] = 1;
	if(!f()) {cout<<-1; return 0;}
	for(i=mx; i; i--) {
		v[i] = 0;
		if(!f()) v[i] = 1;
	}
	for(i=mx; i; i--) if(v[i]) ans += 1LL<<i;
	cout<<ans;
	return 0;
}