#dwango2017qualc. [dwango2017qual_c]スキーリフトの相乗り

[dwango2017qual_c]スキーリフトの相乗り

问题文

喜欢滑雪的小孝开始在NicoNico滑雪场做升降机工作。这个滑雪场有一台每台搬运器(椅子)能容纳4个人的升降机,并且有1台这样的升降机。滑雪客以1人到4人的团队形式排队等候上升。

某一天,小孝困扰于升降机的排队队列长度太长,于是他想要让滑雪客们共乘升降机。小孝决定按照以下步骤将滑雪客的团队引导至各个搬运器:

  • 首先,引导排在队列最前面的团队上升。
  • 只要存在可以共乘当前搬运器而不超过定员的团队,就引导这样的团队上升。但是,如果存在多个这样的团队,则不论位置如何,都可以引导任意一个团队。

现在,有N个滑雪客的团队排队等候,从队列的开头到第i (1 ≤ i ≤ N)个团队的成员数为Ai。请问,通过小孝巧妙地引导滑雪客的团队,最少需要多少台升降机才能将所有团队运送完毕。

制约条件

  • 1 ≤ N ≤ 10510^5
  • 1 ≤ Ai ≤ 4

输入

从标准输入中按以下格式输入。

N A1 A2 : AN

输出

输出以1行的形式给出为了将所有团队都运送完毕所需的升降机数量。最后要输出换行符。

输入例子1

3
1
1
2

输出例子1

1

只要总数不超过4人,小孝可以将任意多个团队引导至同一台升降机。

输入例子2

6
3
1
4
2
1
2

输出例子2

4

例如,按照以下方式引导滑雪客,就可以用4台升降机将所有团队运送完毕。

  • 将第1个团队和第5个团队引导至第1台升降机。
  • 将第2个团队和第4个团队引导至第2台升降机。
  • 将第3个团队引导至第3台升降机。
  • 将第6个团队引导至第4台升降机。