/* Code for problem B by cookiedoth Generated 09 Apr 2021 at 03.27 PM СТРОИМ КОММУНИЗМ РАБОТЯГИ! ╦═╩═╦═╩═█ ████▄▄▄═╦═╩═╦═╩═╦═█ ████████████████▄▄╦═╩═╦═╩═█ █═╦═╩═╦▄████████████████▀▀▀▀█████████▄╦═╩═╦═█ █═╩═╦═████████████████████▄═╦▀█████████═╦═╩═█ █═╦═▄██████████▀╩═╦═╩▄██████▄═╦▀████████▄═╦═█ █═╩═█████████▀╩═╦═╩═█████████▄╩═╦████████═╩═█ █═╦█████████▄═╦═╩═╦═▀█████████╦═╩═████████╦═█ █═╩███████████▄▄██▄═╦═▀████████═╦═████████╩═█ █═██████████████████▄═╦═▀█████▀═╩═█████████═█ █═████████████████████▄═╦═▀███╩═╦═█████████═█ █═╦████████████▀╩▀██████▄═╦═▀═╦═╩█████████╦═█ █═╩█████████▀═╩═╦═╩▀▀███▀▀╩═╦═╩═██████████╩═█ █═╦═██████▀═╦═▄▄█▄▄═╩═╦═╩═╦═╩═╦═╩▀███████═╦═█ █═╩═▀████═╩═▄█████████▄▄▄▄████▄═╦═╩█████▀═╩═█ █═╦═╩═██████████████████████████▄═▄████═╩═╦═█ █═╩═╦═╩▀█████████████████████████████▀╩═╦═╩═█ █═╦═╩═╦═╩▀▀███████████████████████▀▀╩═╦═╩═╦═█ █═╩═╦═╩═╦═╩═▀▀▀███████████████▀▀▀═╩═╦═╩═╦═╩═█ █═╦═╩═╦═╩═╦═╩═╦═╩═▀▀▀▀▀▀▀▀▀═╩═╦═╩═╦═╩═╦═╩═╦═█ █═╩═╦═╩═╦═╩═╦═╩═╦═╩═╦═╩═╦═╩═╦═╩═╦═╩═╦═╩═╦═╩═█ █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█ -_- z_z =_= */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long #define ld long double #define null NULL #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() #define debug(a) cerr << #a << " = " << a << endl #define forn(i, n) for (int i = 0; i < n; ++i) #define length(a) (int)a.size() using namespace std; template int chkmax(T &a, T b) { if (b > a) { a = b; return 1; } return 0; } template int chkmin(T &a, T b) { if (b < a) { a = b; return 1; } return 0; } template void output(iterator begin, iterator end, ostream& out = cerr) { while (begin != end) { out << (*begin) << " "; begin++; } out << endl; } template void output(T x, ostream& out = cerr) { output(x.begin(), x.end(), out); } void fast_io() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); } signed main() { fast_io(); vector cnt(4); int n; cin >> n; for (int i = 0; i < n; ++i) { int val; cin >> val; if (val > 3) { val = 3; } cnt[val]++; } ll ans = 0; for (int i = 1; i <= 3; ++i) { for (int j = i; j <= 3; ++j) { ll ways = (i == j ? (cnt[i] * (cnt[i] - 1) / 2) : cnt[i] * cnt[j]); ll mx = 1; if (i == 1) { mx = 2; } if (i == 1 && j == 2) { mx = 3; } ans += ways * mx; } } cout << ans << '\n'; }