N = int(eval(input()))

A = list(map(int, input().split()))  # N+1体のモンスター

B = list(map(int, input().split()))  # N人の勇者



before_A = sum(A)

# 一つ目の街の処理を先に行う

if A[0] >= B[0]:  # モンスターの数の多いなら

    A[0] -= B[0]

    B[0] = 0

else:  # 勇者のキャパシティの方が大きいなら

    B[0] -= A[0]

    A[0] = 0



# i番目の街について処理を行なっていく

for i in range(1, N):

    if B[i-1] > 0:  # まだ以前の勇者にキャパが残ってるなら

        tmp = min(A[i], B[i-1])

        A[i] -= tmp

        B[i-1] -= tmp



    if A[i] > 0:  # まだi番目の街にモンスターが残っているならば

        tmp = min(A[i], B[i])

        A[i] -= tmp

        B[i] -= tmp



if (A[-1] > 0) & (B[-1] > 0):

    tmp = min(A[-1], B[-1])

    A[-1] -= tmp

    B[-1] -= tmp



after_A = sum(A)

# 

# print(A)

# print(B)



print((before_A - after_A))

N = int(eval(input()))



A = list(map(int, input().split()))  # N+1個の街

B = list(map(int, input().split()))  # N人の勇者



total_monster = sum(A)



if A[0] >= B[0]:  # 最初の街について、モンスターの方が多かったら

    A[0] -= B[0]

    B[0] = 0

else:  # 最初の街について、勇者のキャパの方が大きかったら

    B[0] -= A[0]

    A[0] = 0



for i in range(1, N):

    # i-1番目の勇者の残りのキャパによって処理を変えていく

    if B[i-1] > 0:  # キャパが残っていた場合

        if A[i] >= B[i-1]:

            A[i] -= B[i-1]

            B[i-1] = 0

        else:  # i-1番目の勇者だけで処理できるなら

            B[i-1] -= A[i]

            A[i] = 0



    if B[i-1] == 0:  # i-1番目の勇者のキャパが0の場合

        if A[i] >= B[i]:

            A[i] -= B[i]

            B[i] = 0

        else:

            B[i] -= A[i]

            A[i] = 0



# 最後の街について処理をする

if A[-1] > 0:

    A[-1] -= min(B[-1], A[-1])



tmp = sum(A)



print((total_monster - tmp))

N = int(eval(input()))
A = list(map(int, input().split()))  # N+1体のモンスター
B = list(map(int, input().split()))  # N人の勇者
before_A = sum(A)
# 一つ目の街の処理を先に行う
if A[0] >= B[0]:  # モンスターの数の多いなら
    A[0] -= B[0]
    B[0] = 0
else:  # 勇者のキャパシティの方が大きいなら
    B[0] -= A[0]
    A[0] = 0
# i番目の街について処理を行なっていく
for i in range(1, N):
    if B[i - 1] > 0:  # まだ以前の勇者にキャパが残ってるなら
        tmp = min(A[i], B[i - 1])
        A[i] -= tmp
        B[i - 1] -= tmp
    if A[i] > 0:  # まだi番目の街にモンスターが残っているならば
        tmp = min(A[i], B[i])
        A[i] -= tmp
        B[i] -= tmp
if (A[-1] > 0) & (B[-1] > 0):
    tmp = min(A[-1], B[-1])
    A[-1] -= tmp
    B[-1] -= tmp
after_A = sum(A)
#
# print(A)
# print(B)
print((before_A - after_A))

N = int(eval(input()))
A = list(map(int, input().split()))  # N+1個の街
B = list(map(int, input().split()))  # N人の勇者
total_monster = sum(A)
if A[0] >= B[0]:  # 最初の街について、モンスターの方が多かったら
    A[0] -= B[0]
    B[0] = 0
else:  # 最初の街について、勇者のキャパの方が大きかったら
    B[0] -= A[0]
    A[0] = 0
for i in range(1, N):
    # i-1番目の勇者の残りのキャパによって処理を変えていく
    if B[i - 1] > 0:  # キャパが残っていた場合
        if A[i] >= B[i - 1]:
            A[i] -= B[i - 1]
            B[i - 1] = 0
        else:  # i-1番目の勇者だけで処理できるなら
            B[i - 1] -= A[i]
            A[i] = 0
    if B[i - 1] == 0:  # i-1番目の勇者のキャパが0の場合
        if A[i] >= B[i]:
            A[i] -= B[i]
            B[i] = 0
        else:
            B[i] -= A[i]
            A[i] = 0
# 最後の街について処理をする
if A[-1] > 0:
    A[-1] -= min(B[-1], A[-1])
tmp = sum(A)
print((total_monster - tmp))

-A = list(map(int, input().split()))  # N+1体のモンスター +A = list(map(int, input().split()))  # N+1個の街 -before_A = sum(A) -# 一つ目の街の処理を先に行う -if A[0] >= B[0]:  # モンスターの数の多いなら +total_monster = sum(A) +if A[0] >= B[0]:  # 最初の街について、モンスターの方が多かったら -else:  # 勇者のキャパシティの方が大きいなら +else:  # 最初の街について、勇者のキャパの方が大きかったら -# i番目の街について処理を行なっていく -    if B[i - 1] > 0:  # まだ以前の勇者にキャパが残ってるなら -        tmp = min(A[i], B[i - 1]) -        A[i] -= tmp -        B[i - 1] -= tmp -    if A[i] > 0:  # まだi番目の街にモンスターが残っているならば -        tmp = min(A[i], B[i]) -        A[i] -= tmp -        B[i] -= tmp -if (A[-1] > 0) & (B[-1] > 0): -    tmp = min(A[-1], B[-1]) -    A[-1] -= tmp -    B[-1] -= tmp -after_A = sum(A) -# -# print(A) -# print(B) -print((before_A - after_A)) +    # i-1番目の勇者の残りのキャパによって処理を変えていく +    if B[i - 1] > 0:  # キャパが残っていた場合 +        if A[i] >= B[i - 1]: +            A[i] -= B[i - 1] +            B[i - 1] = 0 +        else:  # i-1番目の勇者だけで処理できるなら +            B[i - 1] -= A[i] +            A[i] = 0 +    if B[i - 1] == 0:  # i-1番目の勇者のキャパが0の場合 +        if A[i] >= B[i]: +            A[i] -= B[i] +            B[i] = 0 +        else: +            B[i] -= A[i] +            A[i] = 0 +# 最後の街について処理をする +if A[-1] > 0: +    A[-1] -= min(B[-1], A[-1]) +tmp = sum(A) +print((total_monster - tmp))