<Problem>
http://ntucoder.net/Problem/Details/5523
Uses Crt;
Var n,i,kq:longint; a:array[1..1000000] of longint; d:array[1..10] of longint;
begin
readln(n);
for i:=1 to n do
begin
read(a[i]);
inc(d[a[i]]);
end;
kq:=kq+d[4];
if d[1]<=d[3] then d[1]:=0 else
begin
d[1]:=d[1]-d[3];
end;
kq:=kq+d[3];
d[3]:=0;
kq:=kq+(d[2]*2+d[1]) div 4;
if (d[2]*2+d[1]) mod 4<>0 then kq:=kq+1;
writeln(kq);
readln;
End.