#include <bits/stdc++.h>
using namespace std;
const int N = 5e2 + 7;
const int INF = 1e8 + 7;
const int MOD = 1e9 + 7;
const long long LINF = 1e17 + 7;
const double Pi = acos(-1.);
const double EPS = 1e-8;
int n, m, b[N * N], f[N][N];
void inc(int &x, int y) {
  x += y;
  if (x >= MOD) x -= MOD;
}
int main() {
  scanf("%d%d", &n, &m);
  b[0] = 1;
  for (int i = 1; i < N * N; ++i) b[i] = 2LL * b[i - 1] % MOD;
  f[0][0] = 1;
  for (int i = 1; i <= n; ++i) {
    f[i][0] = 1;
    for (int j = 1, up = min(i, m); j <= up; ++j)
      for (int k = j - 1; k < i; ++k) {
        inc(f[i][j],
            1LL * f[k][j - 1] * (b[i - k] - 1) % MOD * b[k * (i - k)] % MOD);
      }
  }
  printf("%d\n", f[n][m]);
  return 0;
}
