#include using namespace std; #define ALL(x) begin(x),end(x) #define rep(i,n) for(int i=0;i<(n);i++) #define debug(v) cout<<#v<<":";for(auto x:v){cout<bool chmax(T &a,const T &b){if(abool chmin(T &a,const T &b){if(b ostream &operator<<(ostream &os,const vector&v){ for(int i=0;i<(int)v.size();i++) os< istream &operator>>(istream &is,vector&v){ for(T &x:v)is>>x; return is; } using Arr=array; signed main(){ vector a(3); cin>>a; sort(ALL(a)); int n;cin>>n; vector v(n); cin>>v; vector l,r; rep(i,n) (i%2?r:l).push_back(v[i]); auto enumerate=[&a](const vector &w){ int n=(int)w.size(); map mp; for(int bit=0;bit<(1<>i)&1){ if(w[i]>=a[2]){ if(state[2]<3) state[2]++; else{ if(state[1]<3) state[1]++; else state[0]++; } }else if(w[i]>=a[1]){ if(state[1]<3) state[1]++; else state[0]++; }else if(w[i]>=a[0]){ state[0]++; } } chmin(state[0],3); mp[state]++; } return mp; }; auto L=enumerate(l); auto R=enumerate(r); ll res=0; for(auto &x:L){ for(auto &y:R){ bool check=true; int t=0; for(int k=2;k>=0;k--){ t+=x.first[k]+y.first[k]; if(t<=0) check=false; t--; } if(check) res+=x.second*y.second; } } cout<