#include <bits/stdc++.h>
using namespace std;
int N, K, i, j, k, l;
long long A[1000005], sol;
int main() {
  scanf("%d", &N);
  for (i = 1; i <= N; i++) {
    scanf("%d", &j);
    if (j == 2) K++;
  }
  if (N == K) {
    sol = 1;
    for (i = 2; i <= N; i++) {
      sol *= i;
      sol %= 1000000007;
    }
    printf("%lld\n", sol);
    return 0;
  }
  A[1] = 1;
  A[2] = 2;
  for (i = 3; i <= N - K; i++)
    A[i] = (A[i - 1] + (i - 1) * A[i - 2]) % 1000000007;
  sol = A[N - K];
  for (i = N - K + 1; i <= N; i++) {
    sol *= i;
    sol %= 1000000007;
  }
  printf("%lld\n", sol);
  return 0;
}
