#include using namespace std; #define fst(t) std::get<0>(t) #define snd(t) std::get<1>(t) #define thd(t) std::get<2>(t) using ll = long long; using P = std::tuple; const int dx[8] = {-1, 1, 0, 0, -1, -1, 1, 1}, dy[8] = {0, 0, -1, 1, -1, 1, -1, 1}; int Bs[3], Cs[3], Ds[3], Es[3]; int N, M, E[30]; template T expt(T a, T n, T mod = std::numeric_limits::max()){ T res = 1; while(n){ if(n & 1){res = res * a % mod;} a = a * a % mod; n >>= 1; } return res; } // nCk template T nCk(T n, T k){ if(n < k){return 0;} T res = 1; for(T i=n;i>n-k;--i){res *= i;} for(T i=1;i<=k;++i){res /= i;} return res; } ll calc(int i, int rest, int redu){ int cn = (i > 0 ? Ds[i-1] : N) - Ds[i]; ll res = 0ll; // j >= rest if(rest <= cn){ ll x = 1ll << cn; for(int j=0;j> Bs[i]; } sort(Bs, Bs+3, std::greater()); std::cin >> N; for(int i=0;i> E[i]; } sort(E, E+N); for(int i=0;i<3;++i){ Cs[i] = lower_bound(E, E+N, Bs[i]) - E; } ll res = 0; if(Cs[0] < N && Cs[1] < N && Cs[2] < N){ M = 0; for(int i=0,j=0;i<3;i=j,++M){ while(j < 3 && Cs[j] == Cs[i]){++j;} Ds[M] = Cs[i]; Es[M] = j - i; } res = calc(0, 3, 0); } std::cout << res << std::endl; }