#include <bits/stdc++.h>
using namespace std;
const int md=1000000007;
int n,i,a[100100],b[100100],c[100100];
long long r;
int main() {
  scanf("%d",&n);
  for (i=0; i<n; i++) {
    scanf("%d",&a[i]);
    if (i==0 || a[i]!=a[i-1]) c[i]=a[i];
  }
  for (i=0; i<n; i++) {
    scanf("%d",&b[i]);
    if (i>0 && b[i-1]!=b[i]) {
      if (c[i-1]!=0 && c[i-1]!=b[i-1]) { puts("0"); return 0; }
      c[i-1]=b[i-1];
    }
    if (c[i]>b[i]) { puts("0"); return 0; }
  }
  if (c[n-1]!=0 && c[n-1]!=b[n-1]) { puts("0"); return 0; }
  c[n-1]=b[n-1];
  for (r=1, i=0; i<n; i++) if (c[i]==0) r=(r*min(a[i],b[i]))%md;
  printf("%d\n",int(r));
  return 0;
}
