#include <bits/stdc++.h>
using namespace std;
inline long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
inline long long lcm(long long a, long long b) { return a / gcd(a, b) * b; }
int month[15] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int dir[8][2] = {{-1, 0},  {1, 0}, {0, -1}, {0, 1},
                 {-1, -1}, {1, 1}, {1, -1}, {-1, 1}};
const int MAXN = 5e2 + 5;
const int INF = 1 << 30;
const long long mod = 1e9 + 7;
const double eps = 1e-8;
const long long inff = 0x3f3f3f3f3f3f3f3f;
int n, k;
long long dp[MAXN][MAXN], res, ans[MAXN];
int main() {
  memset(dp, 0, sizeof(dp));
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) {
    dp[i][0] = 1;
    for (int j = 1; j <= n; j++) {
      for (int k = 1; k <= min(j, i); k++)
        dp[i][j] = (dp[i][j] + dp[i][j - k]) % mod;
      cout << dp[i][j] << " \n"[j == n];
    }
  }
  for (int i = 1; i <= n; i++) ans[i] = (dp[i][n] - dp[i - 1][n] + mod) % mod;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
      if (i * j < k) res = (res + ans[i] * ans[j]) % mod;
  printf("%I64d", res * 2ll % mod);
}
