There are N positive integers arranged in a circle.

Now, the i-th number is A_i. Takahashi wants the i-th number to be B_i. For this objective, he will repeatedly perform the following operation:

* Choose an integer i such that 1 \leq i \leq N.
* Let a, b, c be the (i-1)-th, i-th, and (i+1)-th numbers, respectively. Replace the i-th number with a+b+c.



Here the 0-th number is the N-th number, and the (N+1)-th number is the 1-st number.

Determine if Takahashi can achieve his objective. If the answer is yes, find the minimum number of operations required.

Constraints

* 3 \leq N \leq 2 \times 10^5
* 1 \leq A_i, B_i \leq 10^9
* All values in input are integers.

Input

Input is given from Standard Input in the following format:


N
A_1 A_2 ... A_N
B_1 B_2 ... B_N


Output

Print the minimum number of operations required, or `-1` if the objective cannot be achieved.

Examples

Input

3
1 1 1
13 5 7


Output

4


Input

4
1 2 3 4
2 3 4 5


Output

-1


Input

5
5 6 5 2 1
9817 1108 6890 4343 8704


Output

25
import heapq
def naive():
    N = int(input())
    a = list(map(int,input().split()))
    b = list(map(int,input().split()))
    hantei = [1]*N
    for i,(x,y) in enumerate(zip(a,b)):
        if x<y:
            hantei[i] = 0
        if x>y:
            print(-1)
            exit()
    # a == b となるidxの数。これがNでwhileから抜ける
    rest = sum(hantei)
    t = []
    for i,val in enumerate(b):
        heapq.heappush(t, (-val,i))
    res = 0
    while rest < N:
        now = heapq.heappop(t)
        abc = -now[0]
        idx = now[1]
        newval = abc - b[(idx-1)%N] - b[(idx+1)%N]
        b[idx] = newval
        # print(b)
        if a[idx] > newval:
            res = -1
            break
        elif a[idx] == newval:
            hantei[idx] = 0
            rest += 1
        res += 1
        heapq.heappush(t, (-newval,idx))
    print(res)
def naive2():
    N = int(input())
    a = list(map(int,input().split()))
    b = list(map(int,input().split()))
    hantei = [1]*N
    for i,(x,y) in enumerate(zip(a,b)):
        if x<y:
            hantei[i] = 0
        if x>y:
            print(-1)
            exit()
    # a == b となるidxの数。これがNでwhileから抜ける
    rest = sum(hantei)
    t = []
    for i,val in enumerate(b):
        if val==a[i] or val==1:
            continue
        heapq.heappush(t, (-val,i))
    res = 0
    while rest < N:
        now = heapq.heappop(t)
        abc = -now[0]
        idx = now[1]
        left = b[(idx-1)%N]
        right = b[(idx+1)%N]
        step = left+right
        if abc <= step:
            res = -1
            break
        sub_cnt = (abc-1)//step
        if (abc-a[idx])%step==0 and (abc-a[idx])//step < sub_cnt:
            res += (abc-a[idx])//step
            hantei[idx] = 0
            b[idx] = a[idx]
            rest += 1
            continue
        if sub_cnt <= 0:
            res = -1
            break
        diff = sub_cnt*step
        b[idx] -= diff
        # print(b)
        if a[idx] > b[idx]:
            res = -1
            break
        elif a[idx] == b[idx]:
            hantei[idx] = 0
            rest += 1
            res += sub_cnt
            continue
        res += sub_cnt
        heapq.heappush(t, (-b[idx],idx))
    print(res)

naive2()