Таня, мячи и <<исключающее или>>

아직 제출이 없습니다시간 제한1초메모리 제한1024 MB

문제

У Тани было nn мячей, она пронумеровала их от 11 до nn. Но, к сожалению, Таня уронила все мячи в реку и сильно расстроилась.

Чтобы утешить ее, старший брат Сережа предложил Тане забавное математическое развлечение: посчитать сумму попарных исключающих или от номеров ее мячей.

Исключающее или двух чисел обозначается как \oplus и соответствует операции <<xor>> в паскале или <<\char 94>> в других языках. Чтобы вычислить xyx \oplus y для двух целых чисел, необходимо сделать следующее: представить каждое из чисел в двоичной системе счисления и сделать ii-й разряд результата единицей, если он равен единице ровно в одном из чисел xx и yy. Например, 32=11_210_2=1_2=13 \oplus 2 = 11\_2 \oplus 10\_2 = 1\_2 = 1, 175=10001_2101_2=10100_2=2017 \oplus 5 = 10001\_2 \oplus 101\_2 = 10100\_2 = 20.

Помогите Тане! Посчитайте сумму по всем парам ее мячей исключающих или их номеров. Таня не любит большие числа, так что ответ необходимо вывести по модулю 109+710^9 + 7.

Например, если у Тани было 33 мяча, то искомое значение равно (12)+(13)+(23)=3+2+1=6(1 \oplus 2) + (1 \oplus 3) + (2 \oplus 3) = 3 + 2 + 1 = 6.

입력

В первой строке задано число nn --- количество мячей у Тани (1n1091 \le n \le 10^9).

출력

Выведите сумму по всем парам ее мячей исключающих или их номеров, взятую по модулю 109+710^9 + 7.