미니언과 방

방마다 사용 가능 여부가 범위 단위로 뒤집힐 때, 매일 뒤집기 직후 N명의 미니언을 현재 사용 가능한 방들에 나누는 집합 분할의 수를 880803841로 나눈 나머지를 구합니다.

보통6조합론구간구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

그루의 지하실에는 미니언 NN마리가 살고, 각 미니언에는 11번부터 NN번까지 번호가 붙어 있다. 지하실에는 수용 인원 제한이 없는 방이 MM개 있고, 각 방은 사용 가능 또는 사용 불가 중 한 가지 상태다. 그루는 매일 연속한 구간에 있는 방의 상태를 모두 뒤집는다.

미니언은 사용 가능한 방에만 살 수 있다. 또 사용 가능한 방에는 미니언이 한 마리 이상 들어가야 한다. 방은 서로 구분하지 않는다. 즉 배치 AA의 모든 방에 대해, 그 방에 있는 미니언 번호 집합과 똑같은 집합을 가진 방이 배치 BB에도 있으면 AABB는 같은 배치로 센다.

처음에는 모든 방이 사용 가능하다. 이어지는 DD일 동안, 그루가 그날의 구간을 뒤집은 직후 미니언을 배치하는 방법의 수를 구하라.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다 (T10T \le 10).

각 테스트 케이스의 첫째 줄에 정수 NN, MM, DD가 공백으로 구분되어 주어진다 (1MN1000001 \le M \le N \le 100000, 1D1000001 \le D \le 100000).

이어지는 DD개 줄에 정수 LLRR이 공백으로 구분되어 주어진다 (1LRM1 \le L \le R \le M). 그루는 그날 방 L,L+1,,RL, L+1, \dots, R의 상태를 뒤집는다.

출력

각 질의마다 미니언을 배치하는 방법의 수를 880803841880803841로 나눈 나머지를 한 줄에 하나씩 출력한다.