어떤 양의 정수 K에 대해 길이가 2K인 비트문자열 X가 있다.
X의 비트들은 왼쪽부터 순서대로 1번부터 2K번까지 번호가 붙어 있다.
처음에 X의 모든 비트는 0이다.
다음과 같은 함수 f(x)가 있다. 이때, x는 길이가 2k 꼴인 비트문자열이다.
x의 길이가 1인 경우, 아무 작업 없이 종료한다.
x를 절반으로 나눈다. 왼쪽 절반을 l, 오른쪽 절반을 r이라고 하자.
왼쪽 절반 l의 비트를 뒤집는다.
f(l)을 재귀호출 한다.
f(r)을 재귀호출 한다.
여기서, 비트를 뒤집는다는 것은 0은 1로 만들고, 1은 0으로 만든다는 것을 의미한다.
모든 비트가 0인 길이가 2K인 비트문자열 X에서 f(X)를 호출한 이후
비트문자열 X를 SK라고 하자.
K=1인 경우, 초기 비트문자열은 00이다.
위 작업의 결과로 최종 비트문자열은 10이 된다.
(왼쪽 절반인 0이 1로 바뀌었다.)
K=2인 경우, 초기 비트문자열은 0000이다.
위 작업에서 첫 번째 호출이 비트문자열을 1100으로 바꾼다.
첫 번째 호출에서 4번 과정의 재귀호출을 하면
비트문자열이 0100으로 바뀌고,
5번 과정의 재귀호출을 하면 비트문자열은 0110으로
바뀌므로, 최종 비트문자열은 0110이 된다.
K=3인 경우, 이와 마찬가지로 최종 비트문자열은 10010110이 된다.
정리하면 다음과 같다.
K
SK
1
10
2
0110
3
10010110
4
0110100110010110
양의 정수 K, L, R를 입력으로 받아,
SK의 L번 비트부터 R번 비트까지 1의 개수를 구하는 프로그램을 작성하시오.
입력 형식
첫 줄에 테스트 케이스의 수를 나타내는
정수 T가 주어진다. (1≤T≤200000)
각 테스트 케이스의 첫 줄에 양의 정수 K,
L, R이
공백으로 구분되어 주어진다.
(1≤K,L,R≤1000000000000000000;L≤R≤2K)
출력 형식
각 테스트 케이스에 대해, SK의 L번 비트부터 R번 비트까지 1의 개수를 각 줄에 출력한다.
예제
입력
3
2 2 4
3 1 6
4 3 6
출력
2
3
2
채점 방식
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.