만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Innocence

시간 제한1초메모리 제한512 MB

요약
길이 N인 배열 중 모든 원소가 L 이상 R 이하이고 원소들의 XOR 값이 K인 경우의 수를 10^9 + 7로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

유형
비트 연산, 동적 계획법, 조합론
정답자
아직 제출이 없습니다

문제

David는 어린 아이다. 그는 Nim 같은 조합 게임을 즐겨 한다. 그는 아마추어이지만 게임 이론에 조예가 깊다. 이번에는 그가 여러분을 위해 문제를 준비했다.

정수 NN, LL, RR, KK가 주어진다. 길이가 NN이고, 모든 원소가 LL 이상 RR 이하이며, 원소들의 비트 XOR이 KK와 같은 정수 배열의 개수를 구하라. 답은 109+710^9 + 7로 나눈 나머지로 출력한다.

David는 해답이 완전히 맞는지 확인하려고 여러 개의 KK에 대한 답도 알고 싶어 한다.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다.

각 테스트 케이스는 다음과 같다. 첫 줄에 정수 NN, LL, RR, QQ가 공백으로 구분되어 주어진다. 이는 NN, LL, RR은 같고 KK만 다른 질의가 QQ개 있다는 뜻이다. 둘째 줄에 질의할 정수 KK QQ개가 공백으로 구분되어 주어진다.

1≤T≤10001 \le T \le 1000, 1≤N≤1091 \le N \le 10^9, 0≤L≤R<2300 \le L \le R < 2^{30}, 1≤Q≤1001 \le Q \le 100, 0≤K<2300 \le K < 2^{30}.

1≤N≤151 \le N \le 15이고 0≤L,R,K<2150 \le L, R, K < 2^{15}을 만족하지 않는 테스트 케이스는 100개를 넘지 않는다.

출력

각 질의에 대해 답을 109+710^9 + 7로 나눈 나머지를 한 줄에 출력한다.

힌트

첫 번째 예제에서는 3을 하나, 4를 하나 고르는 방법이 두 가지 있으며, 이들의 XOR 값은 7이다.

두 번째 예제에서는 3을 하나, 4를 두 개 고르는 방법이 세 가지이고, 3을 세 개 고르는 방법이 한 가지이다. 이때 XOR 값은 3이다.

예제1

  1. 예제 1

    입력
    3
    2 3 4 2
    0 7
    3 3 4 2
    3 4
    5 5 7 4
    5 6 7 8
    
    예상 출력
    2
    2
    4
    4
    61
    61
    61
    0