口吃
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

~~~~~~\sf Zaoly要讲一句话,这句话有 n 个字,他要一个字一个字讲出来。奈何 \sf Zaoly 口吃:
~~~~~~~~~\bullet\讲到第 1 个字时,下一个要讲的字有 \frac {a_1} {a_1 + b_1} 的概率前进到第 2 个字,有 \frac {b_1} {a_1 + b_1} 的概率仍是第 1 个字。
~~~~~~~~~\bullet\讲到第 i2 \leq i \leq {n - 1})个字时,下一个要讲的字有 \frac {a_i^2} {a_i^2 + 2 a_i \cdot b_i + b_i^2} 的概率前进到第 i + 1 个字,有 \frac {2 a_i \cdot b_i} {a_i^2 + 2 a_i \cdot b_i + b_i^2} 的概率仍是第 i 个字,有 \frac {b_i^2} {a_i^2 + 2 a_i \cdot b_i + b_i^2} 的概率倒退到第 i - 1 个字。
~~~~~~~~~\bullet\讲到第 n 个字时,讲话完毕,停止讲话。
~~~~~~直到讲话完毕,\sf Zaoly总共讲出的字数的期望是多少?

输入描述:

~~~~~~第一行输入一个整数 n\ (2 \leq n \leq 10^5),表示这句话有 n 个字。
~~~~~~第二行输入 n - 1 个数 a_1,a_2,\dots,a_{n - 1}\ (1 \leq a_i \leq 10^9) 表示数组。
~~~~~~第三行输入 n - 1 个数 b_1,b_2,\dots,b_{n - 1}\ (1 \leq b_i \leq 10^9) 表示数组。
~~~~~~保证对于所有的 1 \leq i \leq n - 1,都满足 a_i + b_i \neq 10^9 + 7

输出描述:

~~~~~~输出总共讲出的字数的期望。

~~~~~~可以证明答案可以表示为一个不可约分数 \frac{p}{q} ,为了避免精度问题,请直接输出整数 \left(\ p \cdot q^{-1} \bmod M\ \right) 作为答案,其中 M = 10^9 + 7q^{-1} 是满足 q\times q^{-1} \equiv 1 \pmod{M} 的整数。
示例1

输入

复制
2
1
1

输出

复制
3

说明

~~~~~~说完第一个字后,有 1 / 2 的概率直接前进到下一个字,有 1 / 4 的概率多讲一个字,有 1 / 8 的概率多讲两个字......
~~~~~~说出总字数的期望为 1 + \frac{1}{2} \times 1 + \frac1 4 \times 2+ \frac1 8 \times 3 + \frac1 {16} \times 4 + \cdots = 3
示例2

输入

复制
3
1 1
1 1

输出

复制
9
示例3

输入

复制
6
1 2 3 4 5
5 4 3 2 1

输出

复制
800000096