import strutils, sequtils, algorithm, tables, math
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[turn: bool, a, b: int], int]()
proc snuke(turn: bool, ai, bi: int): int =
if memo.contains((turn, ai, bi)):
return memo[(turn, ai, bi)]
var ans: int
if turn:
ans = 0
if ai < A:
ans = max(ans, aa[ai] + snuke(false, ai + 1, bi))
if bi < B:
ans = max(ans, bb[bi] + snuke(false, ai, bi + 1))
else:
if ai == A and bi == B:
return 0
ans = 2 ^ 31
if ai < A:
ans = min(ans, snuke(true, ai + 1, bi))
if bi < B:
ans = min(ans, snuke(true, ai, bi + 1))
memo[(turn, ai, bi)] = ans
result = ans
echo snuke(true, 0, 0)