완벽한 집합의 개수

0부터 k까지의 정수 중에서 비트 XOR 연산에 닫혀 있는 집합의 개수를 10^9+7로 나눈 나머지를 구한다.

보통7비트 연산조합론동적 계획법아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

음이 아닌 정수로 이루어진 비어 있지 않은 집합 SS가 다음 조건을 만족하면 완벽한 집합이라고 한다.

aSa \in S이고 bSb \in S인 임의의 두 정수 aa, bb에 대해 (aabb는 같아도 된다) abSa \oplus b \in S이다. 여기서 \oplus는 비트 단위 배타적 논리합(XOR)이다.

정수 kk가 주어질 때, 모든 원소가 kk 이하인 완벽한 집합의 개수를 구하라.

입력

첫째 줄에 정수 kk가 주어진다. (0k1090 \le k \le 10^9)

출력

모든 원소가 kk 이하인 완벽한 집합의 개수를 109+710^9 + 7로 나눈 나머지를 첫째 줄에 출력한다.

힌트

k=1k = 1이면 완벽한 집합은 {0}\{0\}, {0,1}\{0, 1\}의 두 개다.

k=4k = 4이면 {0}\{0\}, {0,1}\{0, 1\}, {0,2}\{0, 2\}, {0,3}\{0, 3\}, {0,4}\{0, 4\}, {0,1,2,3}\{0, 1, 2, 3\}의 여섯 개다.