Virtual contest is a way to take part in past contest, as close as possible to participation on time. It is supported only ACM-ICPC mode for virtual contests.
If you've seen these problems, a virtual contest is not for you - solve these problems in the archive.
If you just want to solve some problem from a contest, a virtual contest is not for you - solve this problem in the archive.
Never use someone else's code, read the tutorials or communicate with other person during a virtual contest.

No tag edit access

E. Sereja and Sets

time limit per test

1.5 secondsmemory limit per test

256 megabytesinput

standard inputoutput

standard outputLet's assume that set *S* consists of *m* distinct intervals [*l*_{1}, *r*_{1}], [*l*_{2}, *r*_{2}], ..., [*l*_{m}, *r*_{m}] (1 ≤ *l*_{i} ≤ *r*_{i} ≤ *n*; *l*_{i}, *r*_{i} are integers).

Let's assume that *f*(*S*) is the maximum number of intervals that you can choose from the set *S*, such that every two of them do not intersect. We assume that two intervals, [*l*_{1}, *r*_{1}] and [*l*_{2}, *r*_{2}], intersect if there is an integer *x*, which meets two inequalities: *l*_{1} ≤ *x* ≤ *r*_{1} and *l*_{2} ≤ *x* ≤ *r*_{2}.

Sereja wonders, how many sets *S* are there, such that *f*(*S*) = *k*? Count this number modulo 1000000007 (10^{9} + 7).

Input

The first line contains integers *n*, *k* (1 ≤ *n* ≤ 500; 0 ≤ *k* ≤ 500).

Output

In a single line, print the answer to the problem modulo 1000000007 (10^{9} + 7).

Examples

Input

3 1

Output

23

Input

3 2

Output

32

Input

2 0

Output

1

Input

2 2

Output

2

Codeforces (c) Copyright 2010-2019 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: Mar/20/2019 07:05:32 (d3).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|