#include <bits/stdc++.h>
using namespace std;
int N, K;
long long F[510][510], P[510 * 510];
int main() {
  scanf("%d%d", &N, &K);
  P[0] = 1;
  for (int i = 1; i <= N * N; i++) P[i] = (P[i - 1] << 1) % 1000000007;
  memset(F, 0, sizeof(F));
  F[0][0] = 1;
  for (int i = 1; i <= N; i++) {
    F[i][0] = 1;
    for (int j = 1; j <= min(i, K); j++)
      for (int k = 0; k < i; k++) {
        F[i][j] = (F[i][j] + (F[k][j - 1] * (P[i - k] - 1) % 1000000007) *
                                 P[(i - k) * k] % 1000000007) %
                  1000000007;
      }
  }
  cout << F[N][K] << endl;
  return 0;
}
