#include using namespace std; #include using namespace atcoder; using ll=long long; using Graph=vector>; #define INF 1000000000 #define MOD 998244353 #define MAX 300000 void dfs(vector &a,int i,ll sum,ll S,vector &A){ if(i==a.size()){ A.push_back(sum); return; } ll x=a[i]; int k=1; while(sum+x<=S){ dfs(a,i+1,sum+x,S,A); x*=a[i]; k++; } } int main(){ int n; ll S; cin>>n>>S; vector a,b; for(int i=0;i>x; if(i%2==0){ a.push_back(x); }else{ b.push_back(x); } } vector A,B; dfs(a,0,0,S,A); dfs(b,0,0,S,B); sort(A.begin(),A.end()); sort(B.begin(),B.end()); ll ans=0; for(int i=0;i