#include using namespace std; using ll = long long; #define rep(i, s, n) for (int i = (s); i < (int)(n); i++) #define rep2(i, n, s) for (int i = (n - 1); i >= (s); i--) template inline bool chmin(T &a, T b) { if (a > b) { a = b; return true; } return false; } template inline bool chmax(T &a, T b) { if (a < b) { a = b; return true; } return false; } ll INF = 1000000000000000000; // rep(i, 0, 4) => 上下左右, rep(i, 0, 8) => 斜めも含む vector dy = {-1, 0, 1, 0, -1, -1, 1, 1}; vector dx = {0, 1, 0, -1, -1, 1, 1, -1}; int main() { int N; cin >> N; int X = 0, Y = 0, Z = 0; rep(i, 0, N) { int a; cin >> a; if (a == 1) X++; else if (a == 2) Y++; else Z++; } cout << X * (X - 1) + Y * (Y - 1) / 2 * Z * (Z - 1) / 2 + 3 * X * Y + Y * Z + 2 * X * Z << endl; }