#arc066b. [arc066_b]Xor Sum

[arc066_b]Xor Sum

题目描述

给定一个正整数 NN,找到满足以下条件的整数对 uuvv 的数量:存在两个非负整数 aabb,使得 aa xorxor b=ub=ua+b=va+b=v。这里,xorxor 表示按位异或。由于可能非常大,请计算答案模 109+710^9+7

约束条件

  • 1N10181≦N≦10^{18}

输入

输入以以下格式从标准输入给出:

NN

输出

打印可能整数对 uuvv 的数量,以 109+710^9+7 取模。

示例输入 1

3

示例输出 1

5

满足条件的五个整数对为:

  • u=0,v=0u=0,v=0 (取 a=0,b=0a=0,b=0,则 00 xorxor 0=00=00+0=00+0=0)。

  • u=0,v=2u=0,v=2 (取 a=1,b=1a=1,b=1,则 11 xorxor 1=01=01+1=21+1=2)。

  • u=1,v=1u=1,v=1 (取 a=1,b=0a=1,b=0,则 11 xorxor 0=10=11+0=11+0=1)。

  • u=2,v=2u=2,v=2 (取 a=2,b=0a=2,b=0,则 22 xorxor 0=20=22+0=22+0=2)。

  • u=3,v=3u=3,v=3 (取 a=3,b=0a=3,b=0,则 33 xorxor 0=30=33+0=33+0=3)。

示例输入 2

1422

示例输出 2

52277

示例输入 3

1000000000000000000

示例输出 3

787014179