#include <bits/stdc++.h>
using namespace std;
long long gt[1111111], sum[1111111], dp[555][555], f[555][555];
int n, base = 1000000007, k;
void init() {
  gt[0] = 1;
  for (int i = 1; i <= n * n; i++) gt[i] = gt[i - 1] * 2 % base;
  sum[0] = 1;
  for (int i = 1; i <= n * n; i++) sum[i] = (sum[i - 1] + gt[i]) % base;
  for (int i = 0; i <= n; i++)
    for (int j = 1; j <= n; j++) dp[i][j] = gt[i * j] * sum[j - 1] % base;
}
int main() {
  cin >> n >> k;
  init();
  memset(f, 0, sizeof(f));
  for (int i = 0; i <= n; i++) f[i][0] = 1;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= k; j++)
      for (int t = i - 1; t >= 0; t--)
        f[i][j] = (f[i][j] + f[t][j - 1] * dp[t][i - t]) % base;
  cout << f[n][k] << endl;
  return 0;
}
