Virtual contest is a way to take part in past contest, as close as possible to participation on time. It is supported only ACM-ICPC mode for virtual contests.
If you've seen these problems, a virtual contest is not for you - solve these problems in the archive.
If you just want to solve some problem from a contest, a virtual contest is not for you - solve this problem in the archive.
Never use someone else's code, read the tutorials or communicate with other person during a virtual contest.

No tag edit access

D. Fox and Perfect Sets

time limit per test

1 secondmemory limit per test

256 megabytesinput

standard inputoutput

standard outputFox Ciel studies number theory.

She thinks a non-empty set *S* contains non-negative integers is perfect if and only if for any (*a* can be equal to *b*), . Where operation *xor* means exclusive or operation (http://en.wikipedia.org/wiki/Exclusive_or).

Please calculate the number of perfect sets consisting of integers not greater than *k*. The answer can be very large, so print it modulo 1000000007 (10^{9} + 7).

Input

The first line contains an integer *k* (0 ≤ *k* ≤ 10^{9}).

Output

Print a single integer — the number of required sets modulo 1000000007 (10^{9} + 7).

Examples

Input

1

Output

2

Input

2

Output

3

Input

3

Output

5

Input

4

Output

6

Note

In example 1, there are 2 such sets: {0} and {0, 1}. Note that {1} is not a perfect set since 1 xor 1 = 0 and {1} doesn't contain zero.

In example 4, there are 6 such sets: {0}, {0, 1}, {0, 2}, {0, 3}, {0, 4} and {0, 1, 2, 3}.

Codeforces (c) Copyright 2010-2019 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: Mar/22/2019 20:28:54 (d3).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|