#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:60777216")
using namespace std;
const int mod = 1000000007;
int n, k;
int d[501][501];
long long pw[555 * 555];
int main() {
  pw[0] = 1;
  for (int i = (1); i < (555 * 555); i++) pw[i] = pw[i - 1] * 2 % mod;
  cin >> n >> k;
  d[0][0] = 1;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= k; j++) {
      long long sum = 0;
      for (int prev = 0; prev < i; prev++) {
        sum = (sum + d[prev][j - 1] * (pw[(i - prev) * (prev + 1)] -
                                       pw[(i - prev) * prev] + mod)) %
              mod;
      }
      d[i][j] = sum % mod;
    }
  }
  long long sum = 0;
  for (int i = (0); i < (n + 1); i++)
    sum = (sum + d[i][k] * pw[(n - i) * i] % mod) % mod;
  cout << sum << endl;
  return 0;
}
