첼시는 현대 미술가다. 다음 작품은 사다리로 만들기로 했다. 사다리 몇 개를 이어 붙인 다음, 그 위에 무늬를 칠할 생각이다.
사다리 하나를 hashigo라고 부르는 그래프로 나타낸다. hashigo는 0번부터 n−1번까지 n개가 있다. 길이가 li인 hashigo i는 정점 vi,0,vi,1,…,vi,2li+5 총 2li+6개로 이루어지고, 간선은 다음 두 종류다.
짝수 번호 정점은 vi,0,vi,2,…,vi,2li+4 순서로 이어져 기둥 하나를 이루고, 홀수 번호 정점은 vi,1,vi,3,…,vi,2li+5 순서로 이어져 나머지 기둥 하나를 이룬다. 두 기둥은 가로대 li+1개로 이어지며, 양 끝의 vi,0, vi,1, vi,2li+4, vi,2li+5에는 가로대가 붙지 않는다.
hashigo i와 hashigo j를 위치 p (0≤p≤li−1), 위치 q (0≤q≤lj−1)에서 붙이는 연산은 다음 네 쌍을 각각 한 정점으로 합치는 것이다.
(vi,2p+2,vj,2q+2),(vi,2p+3,vj,2q+4),(vi,2p+4,vj,2q+3),(vi,2p+5,vj,2q+5)
첼시는 이 연산을 n−1번 해서 hashigo n개를 하나로 잇는다. 연산을 모두 마친 그래프는 연결 그래프이고, 모든 정점의 차수가 4 이하다.
이제 각 정점을 검은색이나 흰색으로 칠하는데, 지켜야 할 조건이 하나 있다.
첼시는 가능한 무늬를 모두 살펴보고 가장 마음에 드는 것을 고르고 싶지만, 경우의 수가 아주 많다. 조건을 만족하는 칠하기가 몇 가지인지 세어라.
입력은 데이터 세트 여러 개로 이루어지고, 각 데이터 세트의 형식은 다음과 같다.
n k
l0 l1 ... ln-1
f0 p0 t0 q0
...
fn-2 pn-2 tn-2 qn-2
첫째 줄에 정수 n (1≤n≤30)과 k (1≤k≤8)가 주어진다.
둘째 줄에 hashigo i의 길이 li (1≤li≤30)가 n개 주어진다.
이어지는 n−1개 줄에는 정수 네 개 fi (0≤fi≤n−1), pi (0≤pi≤lfi−1), ti (0≤ti≤n−1), qi (0≤qi≤lti−1)가 주어진다. hashigo fi와 hashigo ti를 각각 위치 pi와 위치 qi에서 붙인다는 뜻이다. hashigo n개를 모두 붙여 만든 그래프는 연결 그래프이고 모든 정점의 차수가 4 이하라고 가정해도 된다.
마지막 데이터 세트 다음 줄에는 0 두 개가 주어진다.
데이터 세트마다 서로 다른 칠하기의 수를 1,000,000,007로 나눈 나머지를 한 줄에 출력한다.