#J00153. Problem C. gcd

0

Problem C. gcd

Problem C. gcd (gcd.c/cpp/pas)

Input file: gcd.in
Output file: gcd.out
Time limit: 1 second
Memory limit: 256 megabytes

Luke 是一名充满好奇心的数学探险家。他最近迷上了一种神秘的数字游戏,游戏规则很简单:在一片数字大陆上,Luke 需要找到特定的数字对。每次,他都要选择两个数字 aa 和 bb,并且要求它们满足一些奇特的关系。

在这片数字大陆上,有一个强大的神秘力量,它就是“最大公约数”(gcd),以及一个神秘的运算符“异或”(xor)。Luke 的任务是找到一对 aa 和 bb 满足 gcd⁡(a,b)=axor⁡b\operatorname{gcd}(a, b) = a \operatorname{xor} b。

然而,这并不是那么简单!Luke 发现这对数字必须位于 [1,n][1, n] 之间,且他只能找出无序的数字对,也就是说 (a,b)(a, b) 和 (b,a)(b, a) 是相同的。

现在,Luke 需要你的帮助,来找出在给定的数字范围内有多少对符合要求的数字对。快来帮助 Luke 一起解开这个谜题吧!

Input

输入共一行,一个整数 nn。

Output

输出一行一个整数,即答案

Examples

【样例 1 输入】

3

【样例 1 输出】

1

【样例 1 解释】

gcd⁡(2,3)=2⊕3=1\gcd(2,3)=2 \oplus 3=1

【样例 2 输入】

588

【样例 2 输出】

887

【样例 3 输入】

1234567

【样例 3 输出】

2153842

Notes

对于30%30\%的数据,n≤103n \le 10^3

对于60%60\%的数据,n≤105n \le 10^5

对于100%100\%的数据,n≤107n \le 10^7