def plucky(A, B, L):
n = len(A)
# using -1 since it won't affect "maxes" since A, B elements and L are > 0
OPA = [-1]*n
OPB = [-1]*n
OPA[0] = A[0]
OPA[1] = OPA[0] + A[1]
OPB[1] = OPA[0] + B[1] - L
for k in range(2, n):
sbea = OPB[k-1] + A[k] - L
saea = OPA[k-1] + A[k]
sbeb = OPB[k-1] + B[k]
saeb = OPA[k-1] + B[k] - L
OPA[k] = max(sbea, saea)
OPB[k] = max(sbeb, saeb)
return max(OPA[n-1], OPB[n-1])
A = [1000, 1, 1]
B = [2, 1000, 1000]
L = 1000
print(plucky(A, B, L))