#include <bits/stdc++.h>
using namespace std;
int f[6], ans;
void out() { printf("%d 1:%d 2:%d 3:%d 4:%d\n", ans, f[1], f[2], f[3], f[4]); }
int main() {
  int n;
  while (~scanf("%d", &n)) {
    int x;
    memset(f, 0, sizeof(f));
    for (int i = 1; i <= n; ++i) {
      scanf("%d", &x);
      ++f[x];
    }
    ans = 0;
    int zmin = min(f[2], f[1]);
    f[3] += zmin;
    ans += zmin;
    f[2] -= zmin;
    f[1] -= zmin;
    f[3] += 2 * (f[2] / 3);
    ans += 2 * (f[2] / 3);
    f[2] %= 3;
    f[3] += f[1] / 3;
    ans += 2 * (f[1] / 3);
    f[1] %= 3;
    if (f[1] <= f[3]) {
      ans += f[1];
      f[1] = 0;
    } else
      f[2] += f[1] / 2, ans += f[1] / 2, f[1] %= 2;
    if (f[1]) {
      if (f[1] <= f[3])
        ans += f[1];
      else if (f[4] >= f[1] * 2)
        ans += f[1] * 2;
      else
        ans = -1;
    } else if (f[2]) {
      if (f[2] == 2)
        ans += 2;
      else if (f[2] == 1) {
        if (f[4])
          ans++;
        else if (f[3] >= 2)
          ans += 2;
        else
          ans = -1;
      }
    }
    printf("%d\n", ans);
  }
}
