#include <bits/stdc++.h>
using namespace std;
const int N = 501, mod = 1e9 + 7;
int Pow[N * N], dp[N][N];
int main() {
  Pow[0] = 1;
  for (int i = 1; i < N * N; i++) Pow[i] = 2ll * Pow[i - 1] % mod;
  for (int i = 0; i < N; i++) dp[i][0] = 1;
  for (int n = 1; n < N; n++)
    for (int k = 1; k < n + 1; k++)
      for (int last = 1; last < n + 1; last++)
        dp[n][k] = (dp[n][k] + 1ll * dp[last - 1][k - 1] *
                                   Pow[(last - 1) * (n - last + 1)] % mod *
                                   (Pow[n - last + 1] - 1) % mod) %
                   mod;
  int n, k;
  cin >> n >> k;
  cout << dp[n][k];
}
