만드는 중입니다

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

기계 학습

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

요약
값이 0부터 k까지인 길이 n의 배열 중, 뒤의 값이 앞의 값의 모든 1비트를 포함하고 주어진 위치 쌍의 값이 서로 달라야 하는 배열의 수를 10^9+7로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

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

문제

인공지능 연구실에서 새로운 기계 학습 방법을 개발했다. 학습에는 nn번의 반복이 있고, 각 반복에서 학습 프로그램을 하나의 학습 데이터 세트로 실행한다.

복잡도가 0부터 kk까지인 학습 데이터 세트가 준비되어 있다. 학습 계획은 배열 [a1,a2,…,an][a_1, a_2, \ldots, a_n]로 표현하며, aia_i는 ii번째 반복에서 사용하는 데이터 세트의 복잡도이다. 모든 ii (1≤i≤n1 \le i \le n)에 대해 0≤ai≤k0 \le a_i \le k를 만족해야 한다.

계획의 효율은 복잡도의 이진 표현에 따라 정해진다. 1≤i<j≤n1 \le i < j \le n인 모든 ii, jj에 대해 (ai & aj)=ai(a_i \,\&\, a_j) = a_i가 성립하면 계획이 효율적이다. 여기서 &\&는 비트 AND 연산이다. 예를 들어 (14 & 7)=(11102 & 01112)=1102=6(14 \,\&\, 7) = (1110_2 \,\&\, 0111_2) = 110_2 = 6이다.

같은 복잡도의 데이터 세트만 반복해서 쓰면 학습이 진전되지 않는다. 그래서 mm개의 요구 조건이 주어진다. 각 조건은 두 수 lil_i, rir_i로 주어지며 ali≠aria_{l_i} \ne a_{r_i}를 뜻한다.

모든 요구 조건을 만족하는 효율적인 학습 계획의 개수를 구하라. 답은 109+710^9 + 7로 나눈 나머지로 출력한다.

입력

첫 줄에 세 정수 nn, mm, kk가 주어진다 (1≤n≤3⋅1051 \le n \le 3 \cdot 10^5, 0≤m≤3⋅1050 \le m \le 3 \cdot 10^5, 0≤k≤10180 \le k \le 10^{18}). 각각 반복 횟수, 요구 조건의 수, 최대 복잡도이다.

다음 mm개의 줄에는 두 정수 lil_i, rir_i가 주어진다 (1≤li<ri≤n1 \le l_i < r_i \le n). 모든 요구 조건은 서로 다르다.

출력

모든 요구 조건을 만족하는 효율적인 학습 계획의 개수를 109+710^9 + 7로 나눈 나머지를 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    2 0 3
    
    예상 출력
    9
    
  2. 예제 2

    입력
    3 1 2
    1 2
    
    예상 출력
    2