from sys import stdin
n = int(input())
n_list = [0] * n
for i in range(n):
n_list[i] = int(stdin.readline().rstrip())
if n == 1:
print(n_list[0])
elif n == 2:
print(n_list[1] + n_list[0])
else:
dp = [0] * n
dp[0] = n_list[0]
dp[1] = n_list[1] + dp[0]
dp[2] = max(n_list[1]+n_list[2], n_list[0]+n_list[2])
for i in range(3, n):
dp[i] = n_list[i] + max(dp[i-3]+n_list[i-1], dp[i-2])
print(dp[-1])
dp 계획을 잘 세워야하는 문제이다.
한 칸씩 가는건 연속으로 2번만 가능하고 그 뒤에는 반드시 두 칸을 이동해야한다.
그래서 3계단 까지는 반복문이 아닌 직접 초기 값을 넣어줘아야한다.
-> 그래야 두 칸 이동한 상태와 한 칸 이동한 상태에 대해서 최대 값을 구할 수 있기 때문이다.