드래곤볼: MatKor Cup 없애기

시간 제한0.7초메모리 제한1024 MB

요약
무작위 과정을 거쳐 P일째와 M일째에 일곱 공이 목표 상태가 되거나 1성구부터 7성구까지 하나씩 존재할 확률을 각각 구한다.
난이도

어려움10점 중 8점

유형
확률, 행렬, 수학, 분할 정복
정답자
아직 제출이 없습니다

문제

이번 MatKor Cup이 왜 FinAL인지 아는가? 이번 대회를 개최하기 전 동우는 이미 00회 대회부터 66회 대회까지 MatKor Cup을 총 77회 진행하며 11성구부터 77성구까지 모아, MatKor Cup을 없애달라는 소원을 빌었기 때문이다.

MatKor Cup이 없어지기 위해서는 11성구부터 77성구까지 공이 하나씩 필요하다. 지금 MatKor에는 11번부터 77번까지 총 77개의 공이 있고, 초기에는 모두 11성구이다. MatKor에는 부원은 NN명이 있고, 각각의 부원은 만질 수 있는 공이 정해져 있다.

이제 하루에 한 번씩 다음 행위를 할 것이다. NN명 중 11명의 부원을 동일한 확률로 골라 해당 부원이 만질 수 있는 공을 모두 한 번씩 만진다. ii번 공을 만지면, ii번 공의 별이 하나 추가되거나 없어진다. 단, 11성구에서 별이 하나 없어지면 77성구가 되며, 77성구에서 별이 하나 추가되면 11성구가 된다. 각 부원이 공을 만질 때 각각의 공의 별은 독립적으로 12\frac{1}{2}의 확률로 추가되거나 없어진다.

오늘로부터 PP일이 지나면 MatKor Cup 예비소집, MM일이 지나면 MatKor Cup 본대회이다. 즉, 위의 행위를 PP번 혹은 MM번 하면 각각 예비소집과 본대회를 치르게 된다. 만약 이 시점에 공을 확인했을 때, 77개의 공이 11성구부터 77성구까지 하나씩 존재하면 MatKor Cup은 없어진다. 단, 예비소집 때 이미 없어졌다면 본대회 때 다시 없어지지는 않는다.

그런데 그동안 MatKor Cup에 고통받은 사람들에게서 원기옥을 받은 동우는 한 가지 가능성을 더 만들었다. 공을 확인하는 시점에 77개의 공이 11성구부터 77성구까지 하나씩 존재하지 않더라도, 1,2,⋯ ,71,2,\cdots ,7번 공이 각각 x_1,x_2,⋯ ,x_7x\_1,x\_2,\cdots ,x\_7성구일 경우에도 MatKor Cup이 없어진다.

MatKor Cup이 예비소집 날에 없어질 확률과 본대회 날에 없어질 확률을 구해보자.

입력

첫 번째 줄에 부원의 수를 나타내는 정수 N(1≤N≤105)N(1\le N\le 10^5), 예비소집과 본대회까지 남은 날의 수를 나타내는 정수 P,M(1≤P\<M≤109)P,M(1\le P\<M\le 10^9)이 공백으로 구분되어 주어진다.

두 번째 줄부터 NN줄에 걸쳐 ii번째 줄에 ii번째 부원이 만질 수 있는 공의 개수 c_i(1≤c_i≤7)c\_i(1\le c\_i\le 7)와 조작할 수 있는 공의 번호 a_i,1,a_i,2,⋯ ,a_i,c_i(1≤a_1\<a_2<⋯\<a_c_i≤7)a\_{i,1},a\_{i,2},\cdots ,a\_{i,c\_i}(1\le a\_1\<a\_2<\cdots \<a\_{c\_i}\le 7)가 한 줄에 공백으로 구분되어 주어진다.

N+2N+2번째 줄에 동우가 추가로 만든 가능성을 의미하는 정수 x_1,x_2,⋯ ,x_7(1≤x_i≤7)x\_1,x\_2,\cdots ,x\_7(1\le x\_i\le 7)이 공백으로 구분되어 주어진다.

출력

첫 번째 줄에 MatKor Cup이 예비소집 날에 없어질 확률을 109+710^9+7로 나눈 나머지를 출력한다.

두 번째 줄에 MatKor Cup이 예비소집 날에 없어지지 않고 본대회 날에 없어질 확률을 109+710^9+7로 나눈 나머지를 출력한다.

기약 분수 pq(p≥0,q>0,gcd⁡(p,q)=1)\frac{p}{q}(p\ge 0,q>0,\gcd(p,q) =1)를 MM으로 나눈 나머지는 q−1q^{-1}가 q⋅q−1≡1(modM)q\cdot q^{-1}\equiv 1\pmod M을 만족하는 정수, 즉 qq의 MM에 대한 모듈로 곱셈 역원일 때, p⋅q−1(modM)p\cdot q^{-1}\pmod M로 정의한다. 만약 정수일 경우 q=q−1=1q=q^{-1}=1이므로 p(modM)p\pmod M를 의미한다.

주어진 조건 내에서 기댓값이 정수 혹은 유리수임을 증명할 수 있으며, 유리수의 경우 기약분수에서 분모가 109+710^9+7의 배수가 아닌 경우만 주어짐이 보장된다.

예제4

  1. 예제 1

    입력
    2 1 3
    4 1 2 3 4
    6 1 2 3 4 5 6
    1 2 3 4 5 6 7
    
    예상 출력
    0
    649200444
    
  2. 예제 2

    입력
    1 1 111
    7 1 2 3 4 5 6 7
    1 2 3 4 5 6 7
    
    예상 출력
    0
    502899806
    
  3. 예제 3

    입력
    2 3 4
    4 1 2 3 4
    6 1 2 3 4 5 6
    2 3 1 5 6 7 4
    
    예상 출력
    649200444
    187844993
    
  4. 예제 4

    입력
    1 11 111
    7 1 2 3 4 5 6 7
    1 1 1 1 1 1 1
    
    예상 출력
    595288894
    293968025