#include <bits/stdc++.h>
using namespace std;
int fn(int threes, int forth);
const int inf = 99999999;
int n, sum, arr[10];
int main() {
  sum = 0;
  memset(arr, 0, sizeof(arr));
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    int x;
    scanf("%d", &x);
    sum += x;
    arr[x]++;
  }
  int ans = inf;
  for (int i = 0; i <= sum / 4; i++) {
    int forth = i;
    int threes = (sum - 4 * forth) / 3;
    ans = min(ans, fn(threes, forth));
  }
  printf("%d\n", ans == inf ? -1 : ans);
  return 0;
}
int fn(int threes, int forth) {
  if (forth * 4 + threes * 3 != sum) return inf;
  int ret = 0;
  int subArr[10];
  for (int i = 1; i <= 4; i++) subArr[i] = arr[i];
  int bases = 0;
  if (subArr[4] > forth) {
    subArr[1] += subArr[4] - forth;
    subArr[3] += subArr[4] - forth;
    bases += forth;
  } else
    bases += subArr[4];
  int left = (forth + threes) - bases;
  bases += min(left, subArr[3]);
  if (left < subArr[3]) ret += (subArr[3] - left) * 3;
  left = (forth + threes) - bases;
  bases += min(left, subArr[2]);
  if (left < subArr[2]) ret += (subArr[2] - left) * 2;
  left = (forth + threes) - bases;
  bases += min(left, subArr[1]);
  if (left < subArr[1]) ret += (subArr[1] - left) * 1;
  return ret;
}
