#include #define rep(i,n) for (int i = 0; i < (n); i++) using namespace std; using ll = long long; using P = pair; int main(){ int n; ll k; cin>>n>>k; unordered_map ma, da; const int mid=30; ll ans; if(n<=mid){ ma[1]=1; for(int i=1; i<=n; i++){ vector

al; for(auto p : ma){ if((ll)i*p.first<=k) al.push_back(P((ll)i*p.first, p.second)); } for(P p : al) ma[p.first]+=p.second; } ll tot=0; for(auto p : ma) tot+=p.second; ans=tot-1; } else{ ma[1]=1; for(int i=1; i<=mid; i++){ vector

al; for(auto p : ma){ if((ll)i*p.first<=k) al.push_back(P((ll)i*p.first, p.second)); } for(P p : al) ma[p.first]+=p.second; } da[k]=1; for(int i=mid+1; i<=n; i++){ vector

al; for(auto p : da){ if(p.first/i>0) al.push_back(P(p.first/i, p.second)); } for(P p : al) da[p.first]+=p.second; } unordered_set kse; for(auto p : ma) kse.insert(p.first); for(auto p : da) kse.insert(p.first); vector kl; for(ll e : kse) kl.push_back(e); sort(kl.begin(), kl.end()); ll c=0, tot=0; for(ll e : kl){ if(ma.count(e)) c+=ma[e]; if(da.count(e)) tot+=c*da[e]; } ans=tot-1; } cout<