Please subscribe to the official Codeforces channel in Telegram via the link: https://t.me/codeforces_official.
×

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-2018 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: Dec/12/2018 16:21:10 (d2).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|