#include <bits/stdc++.h>
using namespace std;
long long n,i,j,a[55],b[55],ans,dp[55][55];
bool check(long long x){
	memset(dp,0,sizeof(dp));
	long long i,j,k;
	for(i=0;i<=50;i++){
		dp[i][i]=1;
	}
	for(k=50;k>=1;k--)if((x>>k)&1){
		for(i=50;i>=0;i--){
			for(j=0;j<=50;j++) if(dp[i][j]){
				dp[i%k][j]=1;
			}
		}
	}
	for(i=1;i<=n;i++){
		if(!dp[b[i]][a[i]]) return 0; 
	}
	return 1;
}
int main(){
	cin>>n;
	for(i=1;i<=n;i++){
		cin>>a[i];
	}
	for(i=1;i<=n;i++){
		cin>>b[i];
	}
	ans=(1ll<<51)-2;
	if(!check(ans)){
		puts("-1");
		return 0;
	}
	for(i=50;i>=1;i--){
		if(check(ans^(1ll<<i))){
			ans^=(1ll<<i);
		}
	}
	cout<<ans<<endl;
	return 0;
}