#include <array>
#include <algorithm>
#include <iostream>

int main()
{
    unsigned int inputs = 0;
    std::array<unsigned int, 5> values; // taxis, group 1, group 2, group 3, group 4
    values.fill(0);
    std::cin >> inputs;
    for (unsigned int i = 0; i < inputs; ++i)
    {
        unsigned int group_size = 0;
        std::cin >> group_size;
        values[group_size]++;
    }

    values[0] = values[4];
    values[0] += (values[3] * 3 + values[1]) / 4;
    values[1] = (values[3] * 3 + values[1]) % 4;
    values[0] += (values[2] * 2 + values[1]) / 4;
    values[1] = (values[2] * 2 + values[1]) % 4;
    values[0] += (values[1] / 4) + (values[1] % 4 ? 1 : 0);
    
    std::cout << values[0] << std::endl;
    return 0;
}