#P1029. 假期安排

假期安排

题目描述

小明有 nn 天假期。他打算利用这些天来提升自己的编程能力或者锻炼身体。

对于第 ii 天,小明知道以下信息:

  • 当天健身房是否开放;
  • 当天是否有线上编程比赛。

每天的情况可以用一个整数 aia_i 表示:

  • ai=0a_i = 0:健身房关闭,且没有比赛;
  • ai=1a_i = 1:健身房关闭,但有比赛;
  • ai=2a_i = 2:健身房开放,但没有比赛;
  • ai=3a_i = 3:健身房开放,且有比赛。

每天小明可以选择做以下事情之一:

  • 休息;
  • 如果当天有比赛,参加比赛;
  • 如果当天健身房开放,去健身。

小明有一个限制:他不能连续两天做同一件事。

也就是说:

  • 他不能连续两天参加比赛;
  • 他不能连续两天去健身。

请问:小明最少需要休息多少天?

注:休息不违反“不能连续两天做同一件事”的限制,可以连续多天休息。

输入格式

第一行一个正整数 nn,表示假期的天数。

第二行包含 nn 个整数 a1,a2,⋯ ,ana_1, a_2, \cdots, a_n,用空格分隔,表示每天的健身房和比赛情况。

输出格式

输出一个整数,表示小明最少需要休息的天数。

样例 1

4
1 3 2 0
2

说明

小明可以在第 1 天参加比赛,第 3 天去健身,其余时间休息。

因此他最少休息 22 天。

样例 2

7
1 3 3 2 1 2 3
0

说明

小明可以安排自己在第 1,3,5,71, 3, 5, 7 天参加比赛,在第 2,4,62, 4, 6 天健身。

这样他一天都不用休息。

样例 3

2
2 2
1

说明

这两天健身房都开放,但小明不能连续两天健身。

所以他只能选择其中一天健身,另一天休息。

因此最少休息 11 天。

数据范围

  • 对于 30%30\% 的数据,n≤100n \le 100
  • 对于 100%100\% 的数据,1≤n≤1051 \le n \le 10^5,0≤ai≤30 \le a_i \le 3