using System; using System.Collections.Generic; using System.Text; public class Program { public void Proc(){ Reader.IsDebug = false; int susiCount = int.Parse(Reader.ReadLine()); this.SusiList.AddRange(Reader.GetInt()); int ans = this.GetAns(0); Console.WriteLine(ans); } private List SusiList = new List(); private Dictionary dic = new Dictionary(); private int GetAns(int idx) { if(dic.ContainsKey(idx)) { return dic[idx]; } if(idx >= SusiList.Count) { return 0; } int ans = 0; ans = Math.Max(ans, GetAns(idx + 2) + this.SusiList[idx]); ans = Math.Max(ans, this.GetAns(idx+1)); dic.Add(idx, ans); return ans; } public static void Main(string[] args) { Program prg = new Program(); prg.Proc(); } } class Reader { public static bool IsDebug = true; private static System.IO.StringReader sr; public static string ReadLine() { if(IsDebug) { if(sr == null) { sr = new System.IO.StringReader(initStr.Trim()); } return sr.ReadLine(); } else { return Console.ReadLine(); } } public static int[] GetInt(char delimiter = ' ') { string[] inpt = ReadLine().Split(delimiter); int[] ret = new int[inpt.Length]; for(int i=0; i