Maxim loves to fill in a matrix in a special manner. Here is a pseudocode of filling in a matrix of size (*m* + 1) × (*m* + 1):

<img class="tex-graphics" src="https://espresso.codeforces.com/d53e75cbc4d1cc0d99ce701f0f5f57692d8e2d0f.png" style="max-width: 100.0%;max-height: 100.0%;"/>

Maxim asks you to count, how many numbers *m* (1 ≤ *m* ≤ *n*) are there, such that the sum of values in the cells in the row number *m* + 1 of the resulting matrix equals *t*.

Expression (*x* *xor* *y*) means applying the operation of bitwise excluding "OR" to numbers *x* and *y*. The given operation exists in all modern programming languages. For example, in languages C++ and Java it is represented by character "^", in Pascal — by "xor".
A single line contains two integers *n* and *t* (1 ≤ *n*, *t* ≤ 10<sup class="upper-index">12</sup>, *t* ≤ *n* + 1).

Please, do not use the %lld specifier to read or write 64-bit integers in C++. It is preferred to use the cin, cout streams or the %I64d specifier.
print("_RANDOM_GUESS_1689174235.4906182")# 1689174235.490635