카우미스트리
시간 제한1초메모리 제한512 MB
서로 겹치지 않는 N개의 구간에서 모든 쌍의 XOR이 K 이하인 서로 다른 세 수의 조합 개수를 10^9+7로 나눈 나머지로 구합니다.
문제
Bessie는 화학 숙제를 계속 미뤄 두었고 이제 당신의 도움이 필요하다. 그녀는 서로 다른 세 종류의 cow-michal을 섞어 혼합물을 만들어야 한다. 그런데 현명한 소들이 아는 것처럼, 일부 cow-michal은 서로 섞으면 폭발하므로 같은 혼합물에 넣을 수 없다. 라벨이 와 인 두 cow-michal은 일 때에만 같은 혼합물에 들어갈 수 있다 ().
NOTE: 여기서 는 음이 아닌 정수 와 의 비트 단위 배타적 논리합(XOR)을 뜻한다. 이 연산은 2진수에서 같은 자리의 비트끼리 더하되 올림은 버린다. 예를 들어,
Bessie는 cow-michal이 담긴 상자를 개() 가지고 있다. 번째 상자에는 라벨이 부터 까지(양 끝 포함) 붙은 cow-michal이 들어 있다(). 두 상자에 같은 cow-michal은 없다. 그녀가 만들 수 있는 서로 다른 세 cow-michal의 혼합물이 모두 몇 가지인지 구하라. 두 혼합물은 한쪽에만 들어 있는 cow-michal이 하나라도 있으면 서로 다른 것으로 본다. 답이 매우 클 수 있으므로 로 나눈 나머지를 출력한다.
입력
첫 줄에 두 정수 과 가 주어진다.
이어지는 개의 줄에는 각각 공백으로 구분된 두 정수 와 가 주어진다. 상자는 내용물의 순서대로 주어지며, 각 에 대해 이다.
출력
Bessie가 만들 수 있는 서로 다른 세 cow-michal 혼합물의 개수를 로 나눈 나머지로 출력한다.