Задача №114004. Много смайликов

«Опять эти задачи про смайлики!» – грустил Серёжа на олимпиаде. Действительно, на этот раз авторы дали бесконечное число задач, пронумерованных натуральными числами \((1, 2, 3, \dots)\), и все они были про смайлики. Серёжа много тренировался перед олимпиадой, и выбрал себе лучшую тактику: после задачи с номером \(x\) он решает задачу с номером \(x\) xor \((x/2)\), где xor – это побитовое исключающее или, а деление производится с округлением вниз. Например, \(4\) xor \(8\) равно \(12\), \(7\) xor \(11\) тоже равно \(12\), \(5\) xor \((5/2)\) равно \(7\).

Серёжа считает задачу с номером \(x\) хорошей, если он решит \(k\) задач (начиная с \(x\), выбирая их по своей тактике, при этом, возможно он решит некоторые задачи не по одному разу), а (\(k + 1\))-й задачей опять окажется \(x\). Помогите Серёже – для данного \(k\) найдите количество хороших задач. Так как ответ может быть большим, выведите его по модулю \(10^9 + 7\).

Входные данные

В единственной строке дано целое число k , 1 ≤ k ≤ 10 9 .

Выходные данные

Выведите одно целое число – количество хороших задач по модулю 10 9 + 7 . Если хороших задач бесконечное количество, выведите - 1 .

Группы тестов

Тесты 3-15 \(-\) 30 баллов. \(n \le 10000\).
Тесты 16-35 \(-\) 70 баллов. Дополнительных ограничений нет.
Примеры
Входные данные
2
Выходные данные
3
Входные данные
260
Выходные данные
15
Сдать: для сдачи задач необходимо войти в систему