output_description: Print the number of possible sequences of the mountains' heights, modulo 10^9
  + 7.
  
  * * *
input_description: The input is given from Standard Input in the following format:
  
      
      
      N
      T_1 T_2 ... T_N
      A_1 A_2 ... A_N
attempt: # -*- coding: utf-8 -*-
  
  #############
  # Libraries #
  #############
  
  import sys
  
  input = sys.stdin.readline
  
  import math
  
  # from math import gcd
  import bisect
  import heapq
  from collections import defaultdict
  from collections import deque
  from collections import Counter
  from functools import lru_cache
  
  #############
  # Constants #
  #############
  
  MOD = 10**9 + 7
  INF = float("inf")
  AZ = "abcdefghijklmnopqrstuvwxyz"
  
  #############
  # Functions #
  #############
  
  
  ######INPUT######
  def I():
      return int(input().strip())
  
  
  def S():
      return input().strip()
  
  
  def IL():
      return list(map(int, input().split()))
  
  
  def SL():
      return list(map(str, input().split()))
  
  
  def ILs(n):
      return list(int(input()) for _ in range(n))
  
  
  def SLs(n):
      return list(input().strip() for _ in range(n))
  
  
  def ILL(n):
      return [list(map(int, input().split())) for _ in range(n)]
  
  
  def SLL(n):
      return [list(map(str, input().split())) for _ in range(n)]
  
  
  ######OUTPUT######
  def P(arg):
      print(arg)
      return
  
  
  def Y():
      print("Yes")
      return
  
  
  def N():
      print("No")
      return
  
  
  def E():
      exit()
  
  
  def PE(arg):
      print(arg)
      exit()
  
  
  def YE():
      print("Yes")
      exit()
  
  
  def NE():
      print("No")
      exit()
  
  
  #####Shorten#####
  def DD(arg):
      return defaultdict(arg)
  
  
  #####Inverse#####
  def inv(n):
      return pow(n, MOD - 2, MOD)
  
  
  ######Combination######
  kaijo_memo = []
  
  
  def kaijo(n):
      if len(kaijo_memo) > n:
          return kaijo_memo[n]
      if len(kaijo_memo) == 0:
          kaijo_memo.append(1)
      while len(kaijo_memo) <= n:
          kaijo_memo.append(kaijo_memo[-1] * len(kaijo_memo) % MOD)
      return kaijo_memo[n]
  
  
  gyaku_kaijo_memo = []
  
  
  def gyaku_kaijo(n):
      if len(gyaku_kaijo_memo) > n:
          return gyaku_kaijo_memo[n]
      if len(gyaku_kaijo_memo) == 0:
          gyaku_kaijo_memo.append(1)
      while len(gyaku_kaijo_memo) <= n:
          gyaku_kaijo_memo.append(
              gyaku_kaijo_memo[-1] * pow(len(gyaku_kaijo_memo), MOD - 2, MOD) % MOD
          )
      return gyaku_kaijo_memo[n]
  
  
  def nCr(n, r):
      if n == r:
          return 1
      if n < r or r < 0:
          return 0
      ret = 1
      ret = ret * kaijo(n) % MOD
      ret = ret * gyaku_kaijo(r) % MOD
      ret = ret * gyaku_kaijo(n - r) % MOD
      return ret
  
  
  ######Factorization######
  def factorization(n):
      arr = []
      temp = n
      for i in range(2, int(-(-(n**0.5) // 1)) + 1):
          if temp % i == 0:
              cnt = 0
              while temp % i == 0:
                  cnt += 1
                  temp //= i
              arr.append([i, cnt])
      if temp != 1:
          arr.append([temp, 1])
      if arr == []:
          arr.append([n, 1])
      return arr
  
  
  #####MakeDivisors######
  def make_divisors(n):
      divisors = []
      for i in range(1, int(n**0.5) + 1):
          if n % i == 0:
              divisors.append(i)
              if i != n // i:
                  divisors.append(n // i)
      return divisors
  
  
  #####MakePrimes######
  def make_primes(N):
      max = int(math.sqrt(N))
      seachList = [i for i in range(2, N + 1)]
      primeNum = []
      while seachList[0] <= max:
          primeNum.append(seachList[0])
          tmp = seachList[0]
          seachList = [i for i in seachList if i % tmp != 0]
      primeNum.extend(seachList)
      return primeNum
  
  
  #####GCD#####
  def gcd(a, b):
      while b:
          a, b = b, a % b
      return a
  
  
  #####LCM#####
  def lcm(a, b):
      return a * b // gcd(a, b)
  
  
  #####BitCount#####
  def count_bit(n):
      count = 0
      while n:
          n &= n - 1
          count += 1
      return count
  
  
  #####ChangeBase#####
  def base_10_to_n(X, n):
      if X // n:
          return base_10_to_n(X // n, n) + [X % n]
      return [X % n]
  
  
  def base_n_to_10(X, n):
      return sum(int(str(X)[-i - 1]) * n**i for i in range(len(str(X))))
  
  
  def base_10_to_n_without_0(X, n):
      X -= 1
      if X // n:
          return base_10_to_n_without_0(X // n, n) + [X % n]
      return [X % n]
  
  
  #####IntLog#####
  def int_log(n, a):
      count = 0
      while n >= a:
          n //= a
          count += 1
      return count
  
  
  #############
  # Main Code #
  #############
  
  N = I()
  A = IL()
  B = IL()
  
  
  def koho(p, q):
      p1, q1 = p
      p2, q2 = q
      p = max(p1, p2)
      q = min(q1, q2)
      if p > q:
          print(0)
          exit()
      else:
          return (p, q)
  
  
  D = [(1, INF) for i in range(N)]
  
  prev = 0
  for i in range(N):
      a = A[i]
      if a > prev:
          temp = (a, a)
      else:
          temp = (1, a)
      D[i] = koho(D[i], temp)
      prev = a
  prev = 0
  for i in range(N)[::-1]:
      a = B[i]
      if a > prev:
          temp = (a, a)
      else:
          temp = (1, a)
      D[i] = koho(D[i], temp)
      prev = a
  ans = 1
  for a, b in D:
      ans *= b - a + 1
      ans %= MOD
  print(ans)
  
problem_description: Statement
  
  Mountaineers Mr. Takahashi and Mr. Aoki recently trekked across a certain
  famous mountain range. The mountain range consists of N mountains, extending
  from west to east in a straight line as Mt. 1, Mt. 2, ..., Mt. N. Mr.
  Takahashi traversed the range from the west and Mr. Aoki from the east.
  
  The height of Mt. i is h_i, but they have forgotten the value of each h_i.
  Instead, for each i (1 ≤ i ≤ N), they recorded the maximum height of the
  mountains climbed up to the time they reached the peak of Mt. i (including Mt.
  i). Mr. Takahashi's record is T_i and Mr. Aoki's record is A_i.
  
  We know that the height of each mountain h_i is a positive integer. Compute
  the number of the possible sequences of the mountains' heights, modulo 10^9 +
  7.
  
  Note that the records may be incorrect and thus there may be no possible
  sequence of the mountains' heights. In such a case, output 0.
samples: [{"input": "5\n    1 3 3 3 3\n    3 3 2 2 2", "output": "4\n    \n\nThe possible sequences of the mountains' heights are:\n\n  * 1, 3, 2, 2, 2\n  * 1, 3, 2, 1, 2\n  * 1, 3, 1, 2, 2\n  * 1, 3, 1, 1, 2\n\nfor a total of four sequences.\n\n* * *"}, {"input": "5\n    1 1 1 2 2\n    3 2 1 1 1", "output": "0\n    \n\nThe records are contradictory, since Mr. Takahashi recorded 2 as the highest\npeak after climbing all the mountains but Mr. Aoki recorded 3.\n\n* * *"}, {"input": "10\n    1 3776 3776 8848 8848 8848 8848 8848 8848 8848\n    8848 8848 8848 8848 8848 8848 8848 8848 3776 5", "output": "884111967\n    \n\nDon't forget to compute the number modulo 10^9 + 7.\n\n* * *"}, {"input": "1\n    17\n    17", "output": "1\n    \n\nSome mountain ranges consist of only one mountain."}]