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)$:

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".
Input
A single line contains two integers $*n*$ and $*t*$ $(1 ≤ *n*, *t* ≤ 10^{12}, *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.
Output
In a single line print a single integer — the answer to the problem.
样例
1 1
1
3 2
1
3 3
0
1000000000000 1048576
118606527258
题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。