#include <bits/stdc++.h>
using namespace std;

vector<int> dp;

int dp1(int n, int A[], int B[]){
    if(dp[n]!=-1){
        return dp[n];
    }
    if(n==0){
        return dp[n]=max(A[n],B[n]);
    }
    if(n==1){
        return dp[n]=max(dp1(n-1,A,B)+A[n],B[n]);
    }else{
        return dp[n]=max(dp1(n-1,A,B)+A[n],dp1(n-2,A,B)+B[n]);
    }
}

int tempo_massimo(int n, int A[], int B[]){
    dp.resize(n,-1);
    return dp1(n-1,A,B);
}

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

int tempo_massimo(int, int[], int[]);

int main()
{
    int n;
    FILE *in = stdin, *out = stdout;
    assert(fscanf(in, "%d", &n) == 1);

    int *a = (int*)calloc(n, sizeof(int));
    int *b = (int*)calloc(n, sizeof(int));

    for(int i=0; i<n; i++){
      assert(fscanf(in, "%d", a + i) == 1);
      assert(fscanf(in, "%d", b + i) == 1);
    }

    int answ = tempo_massimo(n, a, b);
    fprintf(out, "%d\n", answ);

    free(a);
    free(b);

    fclose(in);
    fclose(out);

    return EXIT_SUCCESS;
}

