#include <iostream>
using namespace std;

const int N = 1e5, MOD = 1e9 + 7;

int a[N], t[N];

int main(){
	int n, mt, ma;
	unsigned long long res = 1;
	cin >> n;
	for(int i = 0;i < n;++i){
		cin >> t[i];
	}
	for(int i = 0;i < n;++i){
		cin >> a[i];
	}
	if(t[n - 1] != a[0]) res = 0;
	else{
		for(int i = 0;i < n;++i){
			if(t[i] == t[n - 1]){
				mt = i;
				break;
			}
		}
		for(int i = n - 1;0 <= i;--i){
			if(a[i] == a[0]){
				ma = i;
				break;
			}
		}
		if(ma - mt < 0) res = 0;
		for(int i = 1;i < n - 1;++i){
			if(i < mt) {
				res *= (t[i] != t[i - 1] ? 1 : t[i]);
			}
			else if(ma < i) {
				res *= (a[i] != a[i + 1] ? 1 : a[i]);
			}
			else if(mt < i && i < ma){
				res *= a[0];
			}
			res %= MOD;
		}
	}
	cout << res << endl;
	return 0;
}
