Written by Anonymous
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double dbl;
#define fr(x,a,b) for(ll x=a;x<b;x++)
#define PB push_back
#define MP make_pair
#define mod 1000000007
#define gmax LLONG_MAX
#define gmin LLONG_MIN
#define INF 2e9
#define N 100001
#define MAX(a,b,c) max(max(a,b),c)
#define MIN(a,b,c) min(min(a,b),c)
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
ll n;
cin>>n;
string s;
ll f[3]={0};
fr(i,0,n){
cin>>s;
if(s[0]=='1' && s[2]=='4') f[0]++;
else if(s[0]=='1' && s[2]=='2') f[1]++;
else f[2]++;
}
//cout<<f[0]<<" "<<f[1]<<" "<<f[2]<<"\n";
ll d,cnt=1;
// combining 1*(1/4) + 1*(3/4) = 1
d=min(f[0],f[2]);
cnt+=d;
f[0]-=d;
f[2]-=d;
//cout<<f[0]<<" "<<f[1]<<" "<<f[2]<<"\n";
// combining 2*(1/4) + 1*(1/2) = 1
d=min(f[0]/2,f[1]);
cnt+=d;
f[0]-=d*2;
f[1]-=d;
//cout<<f[0]<<" "<<f[1]<<" "<<f[2]<<"\n";
// combining 4*(1/4) = 1
cnt+=f[0]/4;
f[0]=f[0]%4;
//cout<<f[0]<<" "<<f[1]<<" "<<f[2]<<"\n";
// combining 2*(1/2) = 1
cnt+=f[1]/2;
f[1]=f[1]%2;
//cout<<f[0]<<" "<<f[1]<<" "<<f[2]<<"\n";
// combining rest of the left slices
cnt+=(f[0]+f[1]+f[2]);
cout<<cnt;
return 0;
}