#include #include #include using namespace std; typedef long long ll; vector v1,v2; void dfs1(vector &v,ll sum,ll mx,int pos){ if(pos==v.size()){ if(sum<=mx) v1.push_back(sum); }else{ ll x = v[pos]; for(int i=0;i<40;i++){ if(sum + x<=mx) dfs1(v,sum + x,mx,pos + 1); else break; x *= v[pos]; } } } void dfs2(vector &v,ll sum,ll mx, int pos){ if(pos==v.size()){ if(sum<=mx) v2.push_back(sum); }else{ ll x = v[pos]; for(int i=0;i<40;i++){ if(sum + x<=mx) dfs2(v,sum + x,mx,pos + 1); else break; x *= v[pos]; } } } int a[10]; int main(){ int i,n,s; cin >> n >> s; for(i=0;i> a[i]; vector v; for(i=0;i4){ v.clear(); for(i=4;i