타냐, 공, 그리고 <<배타적 논리합>>
시간 제한1초메모리 제한512 MB
1부터 n까지 정수의 모든 순서 없는 쌍에 대한 비트 XOR 값의 합을 10^9+7로 나눈 나머지를 구한다. n은 최대 10^9이다.
문제
타냐는 공 개를 가지고 있었고, 부터 까지 번호를 붙였다. 하지만 안타깝게도 타냐는 모든 공을 강에 빠뜨렸고, 크게 낙담했다.
그녀를 위로하기 위해 오빠 세료자는 타냐에게 재미있는 수학 놀이를 제안했다. 공 번호들의 모든 쌍에 대한 배타적 논리합의 합을 구하는 것이다.
두 수의 배타적 논리합은 로 표기하며, 파스칼의 <<xor>> 연산이나 다른 언어의 <<\char 94>> 연산에 해당한다. 두 정수 를 계산하려면, 각 수를 이진법으로 나타내고, 번째 자리가 와 중 정확히 하나에서 이면 결과의 번째 자리를 로 한다. 예를 들어, , 이다.
타냐를 도와주자! 그녀의 공 번호들의 모든 쌍에 대한 배타적 논리합의 합을 구하라. 타냐는 큰 수를 좋아하지 않으므로, 답은 로 나눈 나머지를 출력해야 한다.
예를 들어, 타냐가 공 개를 가지고 있었다면, 구하는 값은 이다.
입력
첫째 줄에 수 이 주어진다. 은 타냐가 가진 공의 개수이다 ().
출력
그녀의 공 번호들의 모든 쌍에 대한 배타적 논리합의 합을 로 나눈 나머지를 출력한다.