import java.util.Scanner;
public class P2579 {
public static void main(String[] args) { // DP
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(), step[] = new int[301], dp[] = new int[301];
for (int i = 0; i < n; i++) {
step[i] = sc.nextInt();
}
dp[0] = step[0];
dp[1] = step[0] + step[1];
dp[2] = Math.max(step[0] + step[2], step[1] + step[2]); // dp[2]는 시작점->0번째계단->2번째계단의 합과 시작점->1번째계단->2번째계단의 합 중 최대값으로 초기화; dp[2]는 연속으로 3칸을 올라오는 경우가 없음
for(int i = 3; i < n; i++) {
dp[i] = Math.max(dp[i-2] + step[i], dp[i-3] + step[i-1] + step[i]); // 두칸 뒤에서 올라오는 것, 한칸 뒤에서 올라오는것(연달아서 3칸을 올라올 수 없기 때문에 [i-3]+[i-1]) 중 최대값을 저장
}
System.out.println(dp[n - 1]);
sc.close();
}
/* DFS 접근 시간조촤
private static int answer = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(), step[] = new int[n];
for (int i = 0; i < n; i++) {
step[i] = sc.nextInt();
}
dfs(step, 0, 0, 0);
System.out.println(answer);
sc.close();
}
private static void dfs(int[] step, int current, int index, int cnt) {
if (cnt == 3 || index >= step.length - 1) {
if (index == step.length - 1 && current > answer) {
answer = current + step[index];
}
return;
}
dfs(step, current + step[index], index + 1, cnt + 1);
dfs(step, current + step[index], index + 2, 1);
}
*/
}