問題文
正整数xに対して、関数f(x)を以下のように定義します。
f(1)=1
f(x)=f(⌊x/2⌋)+f(⌈x/2⌉) (2≤x)
ここで、⌊x⌋はxを超えない最大の整数、⌈x⌉はx以上の最小の整数を表します。
f(NK)の値を109+7で割った余りを出力してください。
制約
- 1≤N,K≤1018
入力
入力はすべて整数である。
N K
出力
f(NK)の値を109+7で割った余りを出力してください。
サンプル
22=4
f(4)=f(2)+f(2)
f(2)=f(1)+f(1)
f(1)=1
以上により、f(4)=4 が求まります。
入力2
1000000000000000000 1000000000000000000
109+7で割った余りを出力することに注意してください。