#include #include #include using namespace std; int N; long K; long ans; int cnt[1<<17]; int cnt2[1<<17]; const int LIM=43; int main() { cin>>N>>K; mapmp; mp[1]=1; for(int i=2;i<=LIM&&i<=N;i++) { mapnxt; for(pairp:mp) { long t=p.first; if(t*i>K) { if(t<1<<17)cnt[t]+=p.second; if(K/t<1<<17)cnt2[K/t]+=p.second; else cnt2[(1<<17)-1]+=p.second; } else { nxt[t]+=p.second; nxt[t*i]+=p.second; } } mp.swap(nxt); } for(pairq:mp) { long p=q.first; if(p<1<<17)cnt[p]+=q.second; if(K/p<1<<17)cnt2[K/p]+=q.second; else cnt2[(1<<17)-1]+=q.second; } for(int i=1;i<1<<17;i++)cnt[i]+=cnt[i-1]; for(int i=(1<<17)-1;i--;)cnt2[i]+=cnt2[i+1]; if(N<=LIM) { cout<<(long)cnt2[0]*2-1<K)break; if(t<1<<17)ans+=cnt2[t]; else ans+=cnt[K/t]; for(int l=k+1;l<=N;l++) { int u=t*l; if(u>K)break; if(u<1<<17)ans+=cnt2[u]; else ans+=cnt[K/u]; for(int m=l+1;m<=N;m++) { long v=(long)u*m; if(v>K)break; if(v<1<<17)ans+=cnt2[v]; else ans+=cnt[K/v]; } } } } } cout<