#include <bits/stdc++.h>
#define MAX_OBJECT 1005
#define MAX 1000001
using namespace std;
int a_max = 0;
int b_max = 0;
int a_side[MAX_OBJECT] = {0};
int b_side[MAX_OBJECT] = {0};
int dp[2][MAX_OBJECT][MAX_OBJECT] = {{{0}}};
int rec(bool player = true, int a = 0, int b = 0){
int &res = dp[player][a][b];
if(~res) return res;
if(a == a_max && b == b_max) return 0;
res = 0;
int x = (player) ? 0 : MAX;
int y = (player) ? 0 : MAX;
int s = (player) ? a_side[a] : 0;
int r = (player) ? b_side[b] : 0;
if(a < a_max) x = rec(!player, (a + 1), b) + s;
if(b < b_max) y = rec(!player, a, (b + 1)) + r;
if(player){
res += (x > y) ? x : y;
}
else{
res += (x < y) ? x : y;
}
return res;
}
int main(void){
scanf("%d", &a_max);
scanf("%d", &b_max);
int i;
for(i = 0; i < a_max; ++i){
scanf("%d", &a_side[i]);
}
for(i = 0; i < b_max; ++i){
scanf("%d", &b_side[i]);
}
memset(dp, -1, sizeof(dp));
printf("%d\n", rec());
return 0;
}