public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int cost[] = new int[in.nextInt()];
        for (int i = 0; i < cost.length; i++) {
            cost[i] = in.nextInt();
        }
        System.out.println(minCostClimbingStairs(cost));
    }
      private static int minCostClimbingStairs(int[] cost) {
          int fs[] = new int[cost.length+1];
          for(int i=2;i<=cost.length;i++){
              fs[i]=Math.min(fs[i-1]+cost[i-1],fs[i-2]+cost[i-2]);
          }
          return fs[cost.length];


      }
}

 private static int minCostClimbingStairs(int[] cost) {
          int fs[] = new int[cost.length+1];
          for(int i=2;i<=cost.length;i++){
//这个部分的代码为什么要是小于等于呢,我的fs数组的长度为cost.length,i<cost.length,输出为fs[cost.length-1];但是用例输出就是有错误的
              fs[i]=Math.min(fs[i-1]+cost[i-1],fs[i-2]+cost[i-2]);           }           return fs[cost.length];       }//这个部分的代码