#include <bits/stdc++.h>
using namespace std;
const long long Mod = 1e9 + 7;
int n, K;
long long Pow[510 * 510];
long long Dp[510][510];
int main() {
  cin >> n >> K;
  Dp[0][0] = 1;
  Pow[0] = 1;
  for (int i = 1; i <= 250000; i++) Pow[i] = Pow[i - 1] * 2 % Mod;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= K; j++) {
      for (int t = 0; t < i; t++) {
        Dp[i][j] = (Dp[i][j] + (Dp[t][j - 1] * (Pow[i - t] - 1) % Mod) *
                                   (Pow[(i - t) * (n - i)])) %
                   Mod;
      }
    }
  }
  long long Ans = 0;
  for (int i = 0; i <= n; i++) Ans = (Ans + Dp[i][K]) % Mod;
  cout << Ans << endl;
  return 0;
}
