#include <bits/stdc++.h>
using namespace std;
long long dp[501][501];
long long d2[501 * 500];
const long long P = 1000000000 + 7;
int main() {
  int N, K;
  cin >> N >> K;
  dp[0][0] = 1;
  d2[0] = 1;
  for (int i = 0; i < (int)(500 * 500); ++i) {
    d2[i + 1] = d2[i] * 2 % P;
  }
  long long ans = 0;
  for (int r = 0; r < (int)(N); ++r) {
    for (int k = 0; k < (int)(K); ++k) {
      for (int rr = r + 1; rr <= N; ++rr) {
        long long Q = d2[(rr - r - 1) * r];
        Q *= d2[rr] - d2[r] + P;
        Q %= P;
        dp[rr][k + 1] += dp[r][k] * Q % P;
        dp[rr][k + 1] %= P;
      }
    }
  }
  for (int r = 0; r < (int)(N + 1); ++r) {
    ans += dp[r][K] * d2[(N - r) * r] % P;
  }
  ans %= P;
  cout << ans << '\n';
  return 0;
}
