아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

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

면접 대비

시간 제한1초메모리 제한1024 MB

요약
1 이상 n 이하의 서로 다른 두 수 x, y에 대해 x xor y의 합을 10^9+7로 나눈 나머지를 구한다.
난이도

보통10점 중 6점

유형
비트 연산, 수학, 조합론, 분할 정복
정답자
아직 제출이 없습니다

문제

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

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

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

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

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

입력

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

출력

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

예제1

  1. 예제 1

    입력
    3
    
    예상 출력
    6