#include using namespace std; typedef long long int ll; typedef pair P; typedef vector VI; typedef vector VVI; #define REP(i,n) for(ll i=0;i<(n);i++) #define ALL(v) v.begin(),v.end() constexpr ll MOD=998244353; constexpr ll INF=2e18; int main(){ ll n, k; cin >> n >> k; VVI dp(n+10); for(ll i=n;i>=1;i--){ dp[i]=dp[i+1]; dp[i].push_back(i); for(int j=i+1;j<=n;j++){ dp[i].push_back(i*j); } sort(ALL(dp[i])); } unordered_map mp; mp[1]=1; ll ans=0; for(ll i=1;i<=n;i++){ unordered_map nxmp; for(auto p:mp){ if(p.first*i*(i+1)*(i+2)<=k){ nxmp[p.first]+=p.second; nxmp[p.first*i]+=p.second; } else{ ans+=p.second; ans+=p.second*(upper_bound(ALL(dp[i]),k/p.first)-dp[i].begin()); } } mp=nxmp; } for(auto p:mp){ ans+=p.second; } cout << ans-1 << endl; return 0; }