#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;
}
I2luY2x1ZGUgPGFycmF5PgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8aW9zdHJlYW0+CgppbnQgbWFpbigpCnsKICAgIHVuc2lnbmVkIGludCBpbnB1dHMgPSAwOwogICAgc3RkOjphcnJheTx1bnNpZ25lZCBpbnQsIDU+IHZhbHVlczsgLy8gdGF4aXMsIGdyb3VwIDEsIGdyb3VwIDIsIGdyb3VwIDMsIGdyb3VwIDQKICAgIHZhbHVlcy5maWxsKDApOwogICAgc3RkOjpjaW4gPj4gaW5wdXRzOwogICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBpbnB1dHM7ICsraSkKICAgIHsKICAgICAgICB1bnNpZ25lZCBpbnQgZ3JvdXBfc2l6ZSA9IDA7CiAgICAgICAgc3RkOjpjaW4gPj4gZ3JvdXBfc2l6ZTsKICAgICAgICB2YWx1ZXNbZ3JvdXBfc2l6ZV0rKzsKICAgIH0KCiAgICB2YWx1ZXNbMF0gPSB2YWx1ZXNbNF07CiAgICB2YWx1ZXNbMF0gKz0gKHZhbHVlc1szXSAqIDMgKyB2YWx1ZXNbMV0pIC8gNDsKICAgIHZhbHVlc1sxXSA9ICh2YWx1ZXNbM10gKiAzICsgdmFsdWVzWzFdKSAlIDQ7CiAgICB2YWx1ZXNbMF0gKz0gKHZhbHVlc1syXSAqIDIgKyB2YWx1ZXNbMV0pIC8gNDsKICAgIHZhbHVlc1sxXSA9ICh2YWx1ZXNbMl0gKiAyICsgdmFsdWVzWzFdKSAlIDQ7CiAgICB2YWx1ZXNbMF0gKz0gKHZhbHVlc1sxXSAvIDQpICsgKHZhbHVlc1sxXSAlIDQgPyAxIDogMCk7CiAgICAKICAgIHN0ZDo6Y291dCA8PCB2YWx1ZXNbMF0gPDwgc3RkOjplbmRsOwogICAgcmV0dXJuIDA7Cn0=