题目背景
Ryoku 在阅读「最初之人」的笔记的时候,发现了一个有趣的运算:xor,这个运算的输入是两个数,输出是一个数,对应的运算时将输入的两个数化为二进制,再把每一位进行比较,若相同则输出的二进制中的这一位为 0,否则为 1。
在关于运算 xor 笔记的下面有一道习题。Ryoku 很快就得出了答案,她想要考考你。
题目描述
Ryoku 向你复述了题目:求:
a=0∑nb=a+1∑n[a≡b(moda xor b)]即:求满足 a≡b(moda xor b),且 a,b 均为小于等于 n 的非负整数,a<b,的有序二元组 (a,b) 个数。
输入格式
输入包含一个整数 n。
输出格式
输出包含一个整数,为上式的值,答案对 109+7 取模。
提示
【样例 1 说明】
符合题意的数对 (a,b) 的有:(0,1),(0,2)。
【数据规模与约定】
对于 20% 的数据,n≤103。
对于 60% 的数据,n≤106。
对于 70% 的数据,n≤109。
对于 100% 的数据,2≤n≤1018。