#include using namespace std; #include using namespace atcoder; using mint=modint998244353; //1000000007; using ll=long long; using pp=pair; #define sr string #define vc vector #define fi first #define se second #define rep(i,n) for(int i=0;i<(int)n;i++) #define pb push_back #define all(v) v.begin(),v.end() #define pque priority_queue #define bpc(a) __builtin_popcount(a) int main(){ ll n,s;cin>>n>>s; ll an=n/2; ll bn=n-an; vca(an),b(bn); rep(i,an)cin>>a[i]; rep(i,bn)cin>>b[i]; vcx; auto f=[&](auto f,vcv,ll now,ll d=0)->void{ if(now==(ll)v.size()){ x.pb(d); return; } for(ll i=1;;i++){ ll nd=d+pow(v[now],i); if(nd>s)break; f(f,v,now+1,nd); } return; }; f(f,a,0); auto y=x; x=vc(0); f(f,b,0); sort(all(y)); ll ans=0; for(ll au:x){ ll it=upper_bound(all(y),s-au)-y.begin(); ans+=it; } cout<