#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
const int maxn=50+5;
int n,a[maxn],b[maxn];
bool vis[maxn];
ll ans;

bool dfs(int x,int y,int pos){
	if(x==y)
		return true;
	if(!pos)
		return false;
	if(vis[pos]&&x%pos!=x&&x%pos>=y&&dfs(x%pos,y,pos-1))
		return true;
	return dfs(x,y,pos-1);
}
bool judge(){
	for(int i=1;i<=n;++i)
		if(!dfs(a[i],b[i],50))
			return false;
	return true;
}

int main(){
	cin>>n;
	for(int i=1;i<=n;++i)
		cin>>a[i];
	for(int i=1;i<=n;++i)
		cin>>b[i];
	for(int i=1;i<=50;++i)
		vis[i]=true;
	if(!judge()){
		puts("-1");
		return 0;
	}
	for(int i=50;i;--i){
		vis[i]=false;
		if(!judge())
			vis[i]=true;
	}
	for(int i=1;i<=50;++i)
		if(vis[i])
			ans|=1ll<<i;
	cout<<ans<<endl;
	return 0;
}