'''
После окончания уроков n групп школьников вышли на улицу и собрались ехать домой к Поликарпу на празднование его дня рождения. Известно, что i-ая группа состоит из si друзей (1 ≤ si ≤ 4), которые не хотят расставаться по пути к Поликарпу. Решено ехать на такси. Каждая машина может вместить не более четырех пассажиров. Какое минимальное количество машин потребуется школьникам, если каждая группа должна целиком находиться в одной из машин такси (но одна машина может вмещать более чем одну группу)?

Входные данные
В первой строке записано целое число n (1 ≤ n ≤ 105) — количество групп школьников. Вторая строка содержит последовательность целых чисел s1, s2, ..., sn (1 ≤ si ≤ 4). Числа записаны через пробел, si — количество ребят в i-ой группе.

Выходные данные
Выведите единственное число — минимальное необходимое количество такси, чтобы отвезти всех ребят к Поликарпу.
HEAD ON
'''
n = int(input())
a = [int(num) for num in input().split(' ')]
# a.sort()
c = [0] * 4
for i in range(n):
    c[a[i] - 1] += 1
count = c[3]
c[3] = 0#4
sum = 0
while c[0] and c[2]:# 1 and 3
    c[0] -= 1
    c[2] -= 1
    count += 1
while c[1] > 1:# 2 and 2
    c[1] -= 2
    count += 1
while c[0] and c[1]:# 1 and 2
    c[0] -= 1
    if c[0]:
        c[0] -= 1
    c[1] -= 1
    count += 1
while c[2]:#3
    c[2] -= 1
    count += 1
while c[1]:#2
    c[1] -= 1
    count += 1
while c[0]:#1
    c[0] -= 4
    if c[0] < 0:
        c[0] = 0
    count += 1
print(count)
