#include <bits/stdc++.h>
using namespace std;
const int N = 502;
const long long M = 1e9 + 7;
int pw2[N * N + N];
int dp[N][N];
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  pw2[0] = 1;
  for (int i = 1; i < N * N + N; ++i) pw2[i] = (2LL * pw2[i - 1]) % M;
  int n, k;
  cin >> n >> k;
  dp[0][0] = 1;
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < k; ++j)
      for (int nx = i + 1; nx <= n; ++nx) {
        long long w = pw2[nx - i] - 1;
        if (w < 0) w += M;
        w = (w * pw2[i * (nx - i)]) % M;
        dp[nx][j + 1] = (1LL * dp[nx][j + 1] + w * dp[i][j]) % M;
      }
  }
  long long ans = 0;
  for (int i = 0; i <= n; ++i)
    ans = (ans + 1LL * pw2[i * (n - i)] * dp[i][k]) % M;
  cout << ans;
}
