#include <iostream>
#include<queue>
#include <algorithm>
#include <map>
#include<unordered_map>
#include <set>
#include <fstream>
#include <vector>
#include <math.h>
#include <iomanip>
#include <string>
#include <cstring>
using namespace std;
#define ll long long
ll mod = 1e9+7;
const int MaxN = 1e5+5;
int MOD = 998244353;
int bit[200000];
ll dem=0;
int main() {
// freopen(".INP", "r", stdin);
//freopen(".OUT", "w", stdout);
int n;
cin >> n;
int x;
vector<ll> a;
map<int, int> mp;
for(int i=0;i<n;i++){
cin >> x;
if(x==4){
dem++;
}
else{
mp[x]++;
a.push_back(x);
}
}
sort(a.begin(),a.end());
int l=0,r=a.size()-1;
while(l<=r){
if(l==r){
dem++;
break;
}
if(a[l]+a[r]>4){
r--;
dem++;
}
else if(a[l]+a[r]<4){
l++;
dem++;
}
else{
dem++;
l++;
r--;
}
}
cout << dem;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxxdWV1ZT4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGU8dW5vcmRlcmVkX21hcD4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPGZzdHJlYW0+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxpb21hbmlwPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8Y3N0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgbGwgbG9uZyBsb25nCgpsbCBtb2QgPSAxZTkrNzsKY29uc3QgaW50IE1heE4gPSAxZTUrNTsKaW50IE1PRCA9IDk5ODI0NDM1MzsKaW50IGJpdFsyMDAwMDBdOwpsbCBkZW09MDsKCmludCBtYWluKCkgewoJLy8gZnJlb3BlbigiLklOUCIsICJyIiwgc3RkaW4pOwoJLy9mcmVvcGVuKCIuT1VUIiwgInciLCBzdGRvdXQpOwoKCgkKCgogICAgaW50IG47CiAgICBjaW4gPj4gbjsKICAgIGludCB4OwogICAgdmVjdG9yPGxsPiBhOwogICAgbWFwPGludCwgaW50PiBtcDsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspewogICAgCWNpbiA+PiB4OwogICAgCWlmKHg9PTQpewogICAgCQlkZW0rKzsKCQl9CgkJZWxzZXsKCQkJbXBbeF0rKzsKCQkJYS5wdXNoX2JhY2soeCk7CgkJfQoJfQoJc29ydChhLmJlZ2luKCksYS5lbmQoKSk7CglpbnQgbD0wLHI9YS5zaXplKCktMTsKCXdoaWxlKGw8PXIpewoJCWlmKGw9PXIpewoJCQlkZW0rKzsKCQkJYnJlYWs7CgkJfQoJCWlmKGFbbF0rYVtyXT40KXsKCQkJci0tOwoJCQlkZW0rKzsKCQl9CgkJZWxzZSBpZihhW2xdK2Fbcl08NCl7CgkJCWwrKzsKCQkJZGVtKys7CgkJfQoJCWVsc2V7CgkJCWRlbSsrOwoJCQlsKys7CgkJCXItLTsKCQl9Cgl9Cgljb3V0IDw8IGRlbTsKCXJldHVybiAwOwp9