#pragma GCC target("avx2") #pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") #include using namespace std; using ll = long long; #define rep(i,n) for(int i=0;i<(int)(n);i++) #include #include #include using namespace __gnu_pbds; constexpr int mxsz = 4098; using bst = bitset; int t; vector v(mxsz); //gp_hash_table mp; unordered_map mp; bst dfs(ll x){ auto itr=mp.find(x); if(itr!=mp.end()) return itr->second; bst res; res.set(); int shf=v.end()-upper_bound(v.begin(),v.end(),x); if(!shf) return mp[x]=0; res>>=shf; res|=dfs(x*7); res|=dfs(x*5); res|=dfs(x*3); res|=dfs(x*2); res.flip(); return mp[x]=move(res); } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cin>>t; vector vv(t); rep(i,t) cin>>vv[i]; vector ans(t,-1); vector p(t); iota(p.begin(),p.end(),0); sort(p.begin(),p.end(),[&](int a,int b){ return vv[a]t){ for(int j=t;j