#include <bits/stdc++.h>
using namespace std;
const int mod = 1'000'000'007;
const int MAX = 107;
void updAdd(int& x, int val)
{
x += val;
if(x >= mod)
x -= mod;
}
int dp[MAX][MAX][MAX];
int main()
{
int n, k;
cin >> n >> k;
for(int i = 1; i <= n; i++)
dp[i][i][i] = 1;
int ans = 0;
for(int i = 0; i <= n; i++)
for(int mn = 0; mn <= n; mn++)
for(int mx = mn; mx <= i; mx++)
{
int val = dp[i][mn][mx];
if(i == n && mx - mn <= k)
updAdd(ans, val);
for(int len = 1; i + len <= n; len++)
updAdd(dp[i + len][min(mn, len)][max(mx, len)], val);
}
cout << ans << "\n";
return 0;
}