#include <bits/stdc++.h>
using namespace std;
int n;
int vis[5];
int a[1000006];
int main() {
  scanf("%d", &n);
  memset(vis, 0, sizeof(vis));
  int s = 0;
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    vis[a[i]]++;
    s += a[i];
  }
  if (s < 3 || s == 5) {
    cout << -1 << endl;
    return 0;
  }
  int ans = 0;
  int tem;
  tem = min(vis[1], vis[2]);
  vis[3] += tem;
  vis[1] -= tem;
  vis[2] -= tem;
  ans += tem;
  if (vis[1]) {
    tem = vis[1] / 3;
    ans += tem * 2;
    vis[3] += tem;
    vis[1] -= tem * 3;
    if (vis[1]) {
      if (vis[1] == 1 && vis[3])
        ans += 1;
      else
        ans += 2;
    }
  } else {
    tem = vis[2] / 3;
    ans += tem * 2;
    vis[2] -= tem * 3;
    vis[3] += tem * 2;
    if (vis[2]) {
      if (vis[2] == 1 && vis[4])
        ans += 1;
      else
        ans += 2;
    }
  }
  cout << ans << endl;
  return 0;
}
