#include <bits/stdc++.h>
const int MAXN = 555;
const int MOD = 1000000007;
int p2[MAXN];
int d[MAXN][MAXN];
int e[MAXN][MAXN];
int main() {
  int n, k, i, j, l, ans;
  p2[0] = 1;
  for (i = 1; i < MAXN; i++) {
    p2[i] = p2[i - 1] * 2 % MOD;
  }
  scanf("%d%d", &n, &k);
  d[0][0] = 1;
  for (l = 0; l < n; l++) {
    for (i = 0; i <= l; i++) {
      for (j = 0; j <= l; j++) {
        e[i][j] += (long long)d[i][j] * p2[j] % MOD;
        e[i][j] %= MOD;
        e[i + 1][l + 1] +=
            (long long)d[i][j] * p2[j] % MOD * (p2[l + 1 - j] - 1) % MOD;
        e[i + 1][l + 1] %= MOD;
      }
    }
    memcpy(d, e, sizeof(e));
    memset(e, 0, sizeof(e));
  }
  ans = 0;
  for (i = 0; i <= n; i++) {
    ans += d[k][i];
    ans %= MOD;
  }
  printf("%d", ans);
  return 0;
}
