
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
	// AtCoder Beginner Contest 087
	// https://atcoder.jp/contests/abc087/tasks
	public static void main(String[] args) {
		FastReader sc = new FastReader();
		int n = sc.nextInt();
		int[][] map = new int[2][n];
		
		for (int i = 0; i < 2; i++) {
			for (int j = 0; j < n; j++) {
				map[i][j] = sc.nextInt();
			}
		}
		
		for (int i = 0; i < 2; i++) {
			for (int j = 0; j < n; j++) {
				if (i == 0 && j == 0) {
					// Do not thing
				} else if (i == 0 && j > 0) {
					map[i][j] += map[i][j-1];
				} else if (i > 0 && j == 0) {
					map[i][j] += map[i-1][j];
				} else {
					map[i][j] += Math.max(map[i-1][j], map[i][j-1]);
				}
			}
		}
		
		System.out.println(map[1][n-1]);
	}
	
	static class FastReader { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() { 
            br = new BufferedReader(new InputStreamReader(System.in)); 
        } 
  
        String next() { 
            while (st == null || !st.hasMoreElements()) { 
                try { 
                    st = new StringTokenizer(br.readLine()); 
                } catch (IOException  e) { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() { 
            String str = ""; 
            try{ 
                str = br.readLine(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } 
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io import java.util.Arrays; Arrays java.util import java.util.StringTokenizer; StringTokenizer java.util public class Main {
	// AtCoder Beginner Contest 087
	// https://atcoder.jp/contests/abc087/tasks
	public static void main(String[] args) {
		FastReader sc = new FastReader();
		int n = sc.nextInt();
		int[][] map = new int[2][n];
		
		for (int i = 0; i < 2; i++) {
			for (int j = 0; j < n; j++) {
				map[i][j] = sc.nextInt();
			}
		}
		
		for (int i = 0; i < 2; i++) {
			for (int j = 0; j < n; j++) {
				if (i == 0 && j == 0) {
					// Do not thing
				} else if (i == 0 && j > 0) {
					map[i][j] += map[i][j-1];
				} else if (i > 0 && j == 0) {
					map[i][j] += map[i-1][j];
				} else {
					map[i][j] += Math.max(map[i-1][j], map[i][j-1]);
				}
			}
		}
		
		System.out.println(map[1][n-1]);
	}
	
	static class FastReader { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() { 
            br = new BufferedReader(new InputStreamReader(System.in)); 
        } 
  
        String next() { 
            while (st == null || !st.hasMoreElements()) { 
                try { 
                    st = new StringTokenizer(br.readLine()); 
                } catch (IOException  e) { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() { 
            String str = ""; 
            try{ 
                str = br.readLine(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } 
} Main // AtCoder Beginner Contest 087
	// https://atcoder.jp/contests/abc087/tasks
	public static void main(String[] args) {
		FastReader sc = new FastReader();
		int n = sc.nextInt();
		int[][] map = new int[2][n];
		
		for (int i = 0; i < 2; i++) {
			for (int j = 0; j < n; j++) {
				map[i][j] = sc.nextInt();
			}
		}
		
		for (int i = 0; i < 2; i++) {
			for (int j = 0; j < n; j++) {
				if (i == 0 && j == 0) {
					// Do not thing
				} else if (i == 0 && j > 0) {
					map[i][j] += map[i][j-1];
				} else if (i > 0 && j == 0) {
					map[i][j] += map[i-1][j];
				} else {
					map[i][j] += Math.max(map[i-1][j], map[i][j-1]);
				}
			}
		}
		
		System.out.println(map[1][n-1]);
	} main {
		FastReader sc = new FastReader();
		int n = sc.nextInt();
		int[][] map = new int[2][n];
		
		for (int i = 0; i < 2; i++) {
			for (int j = 0; j < n; j++) {
				map[i][j] = sc.nextInt();
			}
		}
		
		for (int i = 0; i < 2; i++) {
			for (int j = 0; j < n; j++) {
				if (i == 0 && j == 0) {
					// Do not thing
				} else if (i == 0 && j > 0) {
					map[i][j] += map[i][j-1];
				} else if (i > 0 && j == 0) {
					map[i][j] += map[i-1][j];
				} else {
					map[i][j] += Math.max(map[i-1][j], map[i][j-1]);
				}
			}
		}
		
		System.out.println(map[1][n-1]);
	} FastReader sc = new FastReader(); sc new FastReader() int n = sc.nextInt(); n sc.nextInt() sc.nextInt sc int[][] map = new int[2][n]; map new int[2][n] 2 n for (int i = 0; i < 2; i++) {
			for (int j = 0; j < n; j++) {
				map[i][j] = sc.nextInt();
			}
		} int i = 0; int i = 0; i 0 i < 2 i 2 i++ i++ i {
			for (int j = 0; j < n; j++) {
				map[i][j] = sc.nextInt();
			}
		} {
			for (int j = 0; j < n; j++) {
				map[i][j] = sc.nextInt();
			}
		} for (int j = 0; j < n; j++) {
				map[i][j] = sc.nextInt();
			} int j = 0; int j = 0; j 0 j < n j n j++ j++ j {
				map[i][j] = sc.nextInt();
			} {
				map[i][j] = sc.nextInt();
			} map[i][j] = sc.nextInt() map[i][j] map[i] map i j sc.nextInt() sc.nextInt sc for (int i = 0; i < 2; i++) {
			for (int j = 0; j < n; j++) {
				if (i == 0 && j == 0) {
					// Do not thing
				} else if (i == 0 && j > 0) {
					map[i][j] += map[i][j-1];
				} else if (i > 0 && j == 0) {
					map[i][j] += map[i-1][j];
				} else {
					map[i][j] += Math.max(map[i-1][j], map[i][j-1]);
				}
			}
		} int i = 0; int i = 0; i 0 i < 2 i 2 i++ i++ i {
			for (int j = 0; j < n; j++) {
				if (i == 0 && j == 0) {
					// Do not thing
				} else if (i == 0 && j > 0) {
					map[i][j] += map[i][j-1];
				} else if (i > 0 && j == 0) {
					map[i][j] += map[i-1][j];
				} else {
					map[i][j] += Math.max(map[i-1][j], map[i][j-1]);
				}
			}
		} {
			for (int j = 0; j < n; j++) {
				if (i == 0 && j == 0) {
					// Do not thing
				} else if (i == 0 && j > 0) {
					map[i][j] += map[i][j-1];
				} else if (i > 0 && j == 0) {
					map[i][j] += map[i-1][j];
				} else {
					map[i][j] += Math.max(map[i-1][j], map[i][j-1]);
				}
			}
		} for (int j = 0; j < n; j++) {
				if (i == 0 && j == 0) {
					// Do not thing
				} else if (i == 0 && j > 0) {
					map[i][j] += map[i][j-1];
				} else if (i > 0 && j == 0) {
					map[i][j] += map[i-1][j];
				} else {
					map[i][j] += Math.max(map[i-1][j], map[i][j-1]);
				}
			} int j = 0; int j = 0; j 0 j < n j n j++ j++ j {
				if (i == 0 && j == 0) {
					// Do not thing
				} else if (i == 0 && j > 0) {
					map[i][j] += map[i][j-1];
				} else if (i > 0 && j == 0) {
					map[i][j] += map[i-1][j];
				} else {
					map[i][j] += Math.max(map[i-1][j], map[i][j-1]);
				}
			} {
				if (i == 0 && j == 0) {
					// Do not thing
				} else if (i == 0 && j > 0) {
					map[i][j] += map[i][j-1];
				} else if (i > 0 && j == 0) {
					map[i][j] += map[i-1][j];
				} else {
					map[i][j] += Math.max(map[i-1][j], map[i][j-1]);
				}
			} if (i == 0 && j == 0) {
					// Do not thing
				} else if (i == 0 && j > 0) {
					map[i][j] += map[i][j-1];
				} else if (i > 0 && j == 0) {
					map[i][j] += map[i-1][j];
				} else {
					map[i][j] += Math.max(map[i-1][j], map[i][j-1]);
				} i == 0 && j == 0 i == 0 i 0 j == 0 j 0 {
					// Do not thing
				} if (i == 0 && j > 0) {
					map[i][j] += map[i][j-1];
				} else if (i > 0 && j == 0) {
					map[i][j] += map[i-1][j];
				} else {
					map[i][j] += Math.max(map[i-1][j], map[i][j-1]);
				} i == 0 && j > 0 i == 0 i 0 j > 0 j 0 {
					map[i][j] += map[i][j-1];
				} map[i][j] += map[i][j-1] map[i][j] map[i] map i j map[i][j-1] map[i] map i j-1 j 1 if (i > 0 && j == 0) {
					map[i][j] += map[i-1][j];
				} else {
					map[i][j] += Math.max(map[i-1][j], map[i][j-1]);
				} i > 0 && j == 0 i > 0 i 0 j == 0 j 0 {
					map[i][j] += map[i-1][j];
				} map[i][j] += map[i-1][j] map[i][j] map[i] map i j map[i-1][j] map[i-1] map i-1 i 1 j {
					map[i][j] += Math.max(map[i-1][j], map[i][j-1]);
				} map[i][j] += Math.max(map[i-1][j], map[i][j-1]) map[i][j] map[i] map i j Math.max(map[i-1][j], map[i][j-1]) Math.max Math map[i-1][j] map[i-1] map i-1 i 1 j map[i][j-1] map[i] map i j-1 j 1 System.out.println(map[1][n-1]) System.out.println System.out System System.out map[1][n-1] map[1] map 1 n-1 n 1 String[] args args static class FastReader { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() { 
            br = new BufferedReader(new InputStreamReader(System.in)); 
        } 
  
        String next() { 
            while (st == null || !st.hasMoreElements()) { 
                try { 
                    st = new StringTokenizer(br.readLine()); 
                } catch (IOException  e) { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() { 
            String str = ""; 
            try{ 
                str = br.readLine(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } FastReader BufferedReader br; br StringTokenizer st; st public FastReader() { 
            br = new BufferedReader(new InputStreamReader(System.in)); 
        } FastReader { 
            br = new BufferedReader(new InputStreamReader(System.in)); 
        } br = new BufferedReader(new InputStreamReader(System.in)) br new BufferedReader(new InputStreamReader(System.in)) String next() { 
            while (st == null || !st.hasMoreElements()) { 
                try { 
                    st = new StringTokenizer(br.readLine()); 
                } catch (IOException  e) { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } next { 
            while (st == null || !st.hasMoreElements()) { 
                try { 
                    st = new StringTokenizer(br.readLine()); 
                } catch (IOException  e) { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } while (st == null || !st.hasMoreElements()) { 
                try { 
                    st = new StringTokenizer(br.readLine()); 
                } catch (IOException  e) { 
                    e.printStackTrace(); 
                } 
            } st == null || !st.hasMoreElements() st == null st null !st.hasMoreElements() st.hasMoreElements() st.hasMoreElements st { 
                try { 
                    st = new StringTokenizer(br.readLine()); 
                } catch (IOException  e) { 
                    e.printStackTrace(); 
                } 
            } try { 
                    st = new StringTokenizer(br.readLine()); 
                } catch (IOException  e) { 
                    e.printStackTrace(); 
                } catch (IOException  e) { 
                    e.printStackTrace(); 
                } IOException  e { 
                    e.printStackTrace(); 
                } e.printStackTrace() e.printStackTrace e { 
                    st = new StringTokenizer(br.readLine()); 
                } st = new StringTokenizer(br.readLine()) st new StringTokenizer(br.readLine()) return st.nextToken(); st.nextToken() st.nextToken st int nextInt() { 
            return Integer.parseInt(next()); 
        } nextInt { 
            return Integer.parseInt(next()); 
        } return Integer.parseInt(next()); Integer.parseInt(next()) Integer.parseInt Integer next() next long nextLong() { 
            return Long.parseLong(next()); 
        } nextLong { 
            return Long.parseLong(next()); 
        } return Long.parseLong(next()); Long.parseLong(next()) Long.parseLong Long next() next double nextDouble() { 
            return Double.parseDouble(next()); 
        } nextDouble { 
            return Double.parseDouble(next()); 
        } return Double.parseDouble(next()); Double.parseDouble(next()) Double.parseDouble Double next() next String nextLine() { 
            String str = ""; 
            try{ 
                str = br.readLine(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
            return str; 
        } nextLine { 
            String str = ""; 
            try{ 
                str = br.readLine(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
            return str; 
        } String str = ""; str "" try{ 
                str = br.readLine(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } IOException e { 
                e.printStackTrace(); 
            } e.printStackTrace() e.printStackTrace e { 
                str = br.readLine(); 
            } str = br.readLine() str br.readLine() br.readLine br return str; str public class Main {
	// AtCoder Beginner Contest 087
	// https://atcoder.jp/contests/abc087/tasks
	public static void main(String[] args) {
		FastReader sc = new FastReader();
		int n = sc.nextInt();
		int[][] map = new int[2][n];
		
		for (int i = 0; i < 2; i++) {
			for (int j = 0; j < n; j++) {
				map[i][j] = sc.nextInt();
			}
		}
		
		for (int i = 0; i < 2; i++) {
			for (int j = 0; j < n; j++) {
				if (i == 0 && j == 0) {
					// Do not thing
				} else if (i == 0 && j > 0) {
					map[i][j] += map[i][j-1];
				} else if (i > 0 && j == 0) {
					map[i][j] += map[i-1][j];
				} else {
					map[i][j] += Math.max(map[i-1][j], map[i][j-1]);
				}
			}
		}
		
		System.out.println(map[1][n-1]);
	}
	
	static class FastReader { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() { 
            br = new BufferedReader(new InputStreamReader(System.in)); 
        } 
  
        String next() { 
            while (st == null || !st.hasMoreElements()) { 
                try { 
                    st = new StringTokenizer(br.readLine()); 
                } catch (IOException  e) { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() { 
            String str = ""; 
            try{ 
                str = br.readLine(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } 
} public class Main {
	// AtCoder Beginner Contest 087
	// https://atcoder.jp/contests/abc087/tasks
	public static void main(String[] args) {
		FastReader sc = new FastReader();
		int n = sc.nextInt();
		int[][] map = new int[2][n];
		
		for (int i = 0; i < 2; i++) {
			for (int j = 0; j < n; j++) {
				map[i][j] = sc.nextInt();
			}
		}
		
		for (int i = 0; i < 2; i++) {
			for (int j = 0; j < n; j++) {
				if (i == 0 && j == 0) {
					// Do not thing
				} else if (i == 0 && j > 0) {
					map[i][j] += map[i][j-1];
				} else if (i > 0 && j == 0) {
					map[i][j] += map[i-1][j];
				} else {
					map[i][j] += Math.max(map[i-1][j], map[i][j-1]);
				}
			}
		}
		
		System.out.println(map[1][n-1]);
	}
	
	static class FastReader { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() { 
            br = new BufferedReader(new InputStreamReader(System.in)); 
        } 
  
        String next() { 
            while (st == null || !st.hasMoreElements()) { 
                try { 
                    st = new StringTokenizer(br.readLine()); 
                } catch (IOException  e) { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() { 
            String str = ""; 
            try{ 
                str = br.readLine(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } 
} Main

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
	// AtCoder Beginner Contest 087
	// https://atcoder.jp/contests/abc087/tasks
	public static void main(String[] args) {
		FastReader sc = new FastReader();
		int n = sc.nextInt();
		int[][] map = new int[2][n];
		
		for (int i = 0; i < 2; i++) {
			for (int j = 0; j < n; j++) {
				map[i][j] = sc.nextInt();
			}
		}
		
		for (int i = 0; i < 2; i++) {
			for (int j = 0; j < n; j++) {
				if (i == 0 && j == 0) {
					// Do not thing
				} else if (i == 0 && j > 0) {
					map[i][j] += map[i][j-1];
				} else if (i > 0 && j == 0) {
					map[i][j] += map[i-1][j];
				} else {
					map[i][j] += Math.max(map[i-1][j], map[i][j-1]);
				}
			}
		}
		
		System.out.println(map[1][n-1]);
	}
	
	static class FastReader { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() { 
            br = new BufferedReader(new InputStreamReader(System.in)); 
        } 
  
        String next() { 
            while (st == null || !st.hasMoreElements()) { 
                try { 
                    st = new StringTokenizer(br.readLine()); 
                } catch (IOException  e) { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() { 
            String str = ""; 
            try{ 
                str = br.readLine(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } 
}
