func_code_string: #include <bits/stdc++.h>   using namespace std;   long long N, K, dp[501][501];   long long p2[501];   void pre() {     long long i;     p2[0] = 1;     for (i = 1; i < 501; ++i) p2[i] = (p2[i - 1] * 2) % 1000000007;   }   long long rec(long long maxinc, long long cur) {     if (maxinc > K) return 0;     if (cur > N) return (maxinc == K);     long long last = cur - 1;     long long &ret = dp[maxinc][cur];     if (ret != -1) return ret;     long long temp, mul = 1;     ret = 0;     long long cc = cur;     for (; cur <= N; ++cur) {       mul = (mul * p2[last]) % 1000000007;       temp = (rec(maxinc + 1, cur + 1) * (p2[cur - last] - 1)) % 1000000007;       ret = (ret + (temp * mul) % 1000000007) % 1000000007;     }     if (maxinc == K) ret = (ret + mul) % 1000000007;     return ret;   }   int main() {     pre();     while (scanf( %I64d %I64d , &N, &K) != EOF) {       memset(dp, -1, sizeof(dp));       printf( %I64d n , rec(0, 1));     }     return 0;   }   