#include <bits/stdc++.h>
using namespace std;
const int N = 505;
const int mod = 1000000007;
int a, b, c, d, e, f, g, h, i, j;
int Mi[N * N];
int F[N][N], K;
void Work() {
  Mi[0] = 1;
  for (int ii = 1; ii <= a * a; ii++) Mi[ii] = (Mi[ii - 1] << 1) % mod;
  F[0][0] = 1;
  for (int ii = 1; ii <= a; ii++)
    for (int jj = 1; jj <= K; jj++) {
      for (int kk = 0; kk < ii; kk++)
        (F[ii][jj] += (long long)F[kk][jj - 1] * (Mi[ii - kk] - 1) % mod *
                      (Mi[(ii - kk) * kk]) % mod) %= mod;
    }
  int an = 0;
  for (int ii = 0; ii <= a; ii++)
    (an += (long long)F[ii][K] * Mi[(a - ii) * ii] % mod) %= mod;
  cout << an << endl;
}
int main() {
  cin >> a >> K;
  Work();
  return 0;
}
