
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Main {
 static int[][] road={{0,1},{1,0}};
 static int num=0;
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		num = sc.nextInt();
		int[][] array = new int[3][num+1];
		for (int i = 1; i <=2; i++) {
			for (int j = 1; j <= num; j++) {
				array[i][j] = sc.nextInt();
			}
		}
		int sum=0;
		List<Integer> list=new ArrayList();
		deepRoad(0,0,array,sum,list);
		
		Collections.sort(list);
		System.out.println(list.get(list.size()-1));
	}

	static void deepRoad(int x,int y,int [][]array,int sum,List<Integer> list) {
		sum+=array[x][y];
		if(x==2&&y==num){
			list.add(sum);
		}
		int m=0,n=0;
		for(int i=0;i<2;i++){
			m=x+road[i][0];
			n=y+road[i][1];
			if(m<=2&&n<=num){
				deepRoad(m,n,array,sum,list);
			}
		}
	}

} import java.util.ArrayList; ArrayList java.util import java.util.Collections; Collections java.util import java.util.List; List java.util import java.util.Scanner; Scanner java.util public class Main {
 static int[][] road={{0,1},{1,0}};
 static int num=0;
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		num = sc.nextInt();
		int[][] array = new int[3][num+1];
		for (int i = 1; i <=2; i++) {
			for (int j = 1; j <= num; j++) {
				array[i][j] = sc.nextInt();
			}
		}
		int sum=0;
		List<Integer> list=new ArrayList();
		deepRoad(0,0,array,sum,list);
		
		Collections.sort(list);
		System.out.println(list.get(list.size()-1));
	}

	static void deepRoad(int x,int y,int [][]array,int sum,List<Integer> list) {
		sum+=array[x][y];
		if(x==2&&y==num){
			list.add(sum);
		}
		int m=0,n=0;
		for(int i=0;i<2;i++){
			m=x+road[i][0];
			n=y+road[i][1];
			if(m<=2&&n<=num){
				deepRoad(m,n,array,sum,list);
			}
		}
	}

} Main static int[][] road={{0,1},{1,0}}; road {{0,1},{1,0}} {0,1} 0 1 {1,0} 1 0 static int num=0; num 0 /**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		num = sc.nextInt();
		int[][] array = new int[3][num+1];
		for (int i = 1; i <=2; i++) {
			for (int j = 1; j <= num; j++) {
				array[i][j] = sc.nextInt();
			}
		}
		int sum=0;
		List<Integer> list=new ArrayList();
		deepRoad(0,0,array,sum,list);
		
		Collections.sort(list);
		System.out.println(list.get(list.size()-1));
	} main {
		Scanner sc = new Scanner(System.in);
		num = sc.nextInt();
		int[][] array = new int[3][num+1];
		for (int i = 1; i <=2; i++) {
			for (int j = 1; j <= num; j++) {
				array[i][j] = sc.nextInt();
			}
		}
		int sum=0;
		List<Integer> list=new ArrayList();
		deepRoad(0,0,array,sum,list);
		
		Collections.sort(list);
		System.out.println(list.get(list.size()-1));
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) num = sc.nextInt() num sc.nextInt() sc.nextInt sc int[][] array = new int[3][num+1]; array new int[3][num+1] 3 num+1 num 1 for (int i = 1; i <=2; i++) {
			for (int j = 1; j <= num; j++) {
				array[i][j] = sc.nextInt();
			}
		} int i = 1; int i = 1; i 1 i <=2 i 2 i++ i++ i {
			for (int j = 1; j <= num; j++) {
				array[i][j] = sc.nextInt();
			}
		} {
			for (int j = 1; j <= num; j++) {
				array[i][j] = sc.nextInt();
			}
		} for (int j = 1; j <= num; j++) {
				array[i][j] = sc.nextInt();
			} int j = 1; int j = 1; j 1 j <= num j num j++ j++ j {
				array[i][j] = sc.nextInt();
			} {
				array[i][j] = sc.nextInt();
			} array[i][j] = sc.nextInt() array[i][j] array[i] array i j sc.nextInt() sc.nextInt sc int sum=0; sum 0 List<Integer> list=new ArrayList(); list new ArrayList() deepRoad(0,0,array,sum,list) deepRoad 0 0 array sum list Collections.sort(list) Collections.sort Collections list System.out.println(list.get(list.size()-1)) System.out.println System.out System System.out list.get(list.size()-1) list.get list list.size()-1 list.size() list.size list 1 String[] args args static void deepRoad(int x,int y,int [][]array,int sum,List<Integer> list) {
		sum+=array[x][y];
		if(x==2&&y==num){
			list.add(sum);
		}
		int m=0,n=0;
		for(int i=0;i<2;i++){
			m=x+road[i][0];
			n=y+road[i][1];
			if(m<=2&&n<=num){
				deepRoad(m,n,array,sum,list);
			}
		}
	} deepRoad {
		sum+=array[x][y];
		if(x==2&&y==num){
			list.add(sum);
		}
		int m=0,n=0;
		for(int i=0;i<2;i++){
			m=x+road[i][0];
			n=y+road[i][1];
			if(m<=2&&n<=num){
				deepRoad(m,n,array,sum,list);
			}
		}
	} sum+=array[x][y] sum array[x][y] array[x] array x y if(x==2&&y==num){
			list.add(sum);
		} x==2&&y==num x==2 x 2 y==num y num {
			list.add(sum);
		} list.add(sum) list.add list sum int m=0 m 0 n=0; n 0 for(int i=0;i<2;i++){
			m=x+road[i][0];
			n=y+road[i][1];
			if(m<=2&&n<=num){
				deepRoad(m,n,array,sum,list);
			}
		} int i=0; int i=0; i 0 i<2 i 2 i++ i++ i {
			m=x+road[i][0];
			n=y+road[i][1];
			if(m<=2&&n<=num){
				deepRoad(m,n,array,sum,list);
			}
		} {
			m=x+road[i][0];
			n=y+road[i][1];
			if(m<=2&&n<=num){
				deepRoad(m,n,array,sum,list);
			}
		} m=x+road[i][0] m x+road[i][0] x road[i][0] road[i] road i 0 n=y+road[i][1] n y+road[i][1] y road[i][1] road[i] road i 1 if(m<=2&&n<=num){
				deepRoad(m,n,array,sum,list);
			} m<=2&&n<=num m<=2 m 2 n<=num n num {
				deepRoad(m,n,array,sum,list);
			} deepRoad(m,n,array,sum,list) deepRoad m n array sum list int x x int y y int [][]array array int sum sum List<Integer> list list public class Main {
 static int[][] road={{0,1},{1,0}};
 static int num=0;
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		num = sc.nextInt();
		int[][] array = new int[3][num+1];
		for (int i = 1; i <=2; i++) {
			for (int j = 1; j <= num; j++) {
				array[i][j] = sc.nextInt();
			}
		}
		int sum=0;
		List<Integer> list=new ArrayList();
		deepRoad(0,0,array,sum,list);
		
		Collections.sort(list);
		System.out.println(list.get(list.size()-1));
	}

	static void deepRoad(int x,int y,int [][]array,int sum,List<Integer> list) {
		sum+=array[x][y];
		if(x==2&&y==num){
			list.add(sum);
		}
		int m=0,n=0;
		for(int i=0;i<2;i++){
			m=x+road[i][0];
			n=y+road[i][1];
			if(m<=2&&n<=num){
				deepRoad(m,n,array,sum,list);
			}
		}
	}

} public class Main {
 static int[][] road={{0,1},{1,0}};
 static int num=0;
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		num = sc.nextInt();
		int[][] array = new int[3][num+1];
		for (int i = 1; i <=2; i++) {
			for (int j = 1; j <= num; j++) {
				array[i][j] = sc.nextInt();
			}
		}
		int sum=0;
		List<Integer> list=new ArrayList();
		deepRoad(0,0,array,sum,list);
		
		Collections.sort(list);
		System.out.println(list.get(list.size()-1));
	}

	static void deepRoad(int x,int y,int [][]array,int sum,List<Integer> list) {
		sum+=array[x][y];
		if(x==2&&y==num){
			list.add(sum);
		}
		int m=0,n=0;
		for(int i=0;i<2;i++){
			m=x+road[i][0];
			n=y+road[i][1];
			if(m<=2&&n<=num){
				deepRoad(m,n,array,sum,list);
			}
		}
	}

} Main

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Main {
 static int[][] road={{0,1},{1,0}};
 static int num=0;
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		num = sc.nextInt();
		int[][] array = new int[3][num+1];
		for (int i = 1; i <=2; i++) {
			for (int j = 1; j <= num; j++) {
				array[i][j] = sc.nextInt();
			}
		}
		int sum=0;
		List<Integer> list=new ArrayList();
		deepRoad(0,0,array,sum,list);
		
		Collections.sort(list);
		System.out.println(list.get(list.size()-1));
	}

	static void deepRoad(int x,int y,int [][]array,int sum,List<Integer> list) {
		sum+=array[x][y];
		if(x==2&&y==num){
			list.add(sum);
		}
		int m=0,n=0;
		for(int i=0;i<2;i++){
			m=x+road[i][0];
			n=y+road[i][1];
			if(m<=2&&n<=num){
				deepRoad(m,n,array,sum,list);
			}
		}
	}

}
