import strutils, sequtils, algorithm, tables, sets
var A, B: int
(A, B) = stdin.readLine.split.map(parseInt)
var
aa = stdin.readLine.split.map(parseInt)
bb = stdin.readLine.split.map(parseInt)
var memo = initTable[tuple[a, b: int], int]()
proc snuke(ai, bi: int): int =
if memo.contains((ai, bi)):
return memo[(ai, bi)]
var ans = 0
if ai < A - 1:
ans = max(ans, aa[ai] + min(snuke(ai + 2, bi), snuke(ai + 1, bi + 1)))
elif ai < A:
ans = max(ans, aa[ai] + snuke(ai + 1, bi + 1))
if bi < B - 1:
ans = max(ans, bb[bi] + min(snuke(ai + 1, bi + 1), snuke(ai, bi + 2)))
elif bi < B:
ans = max(ans, bb[bi] + snuke(ai + 1, bi + 1))
memo[(ai, bi)] = ans
result = ans
echo snuke(0, 0)