[HNOI2019]白兔之舞
题号:NC50717
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

有一张顶点数为的有向图。这张图的每个顶点由一个二元组(u,v)表示。这张图不是简单图,对于任意两个顶点(u_1,v_1),(u_2,v_2),如果,则从(u_1,v_1)(u_2,v_2)一共有w(v_1,v_2)条不同的边,如果则没有边。
白兔将在这张图上上演一支舞曲。白兔初始时位于该有向图的顶点(0,x)。
白兔将会跳若干步。每一步,白兔会从当前顶点沿任意一条出边跳到下一个顶点。白兔可以在任意时候停止跳舞(也可以没有跳就直接结束)。当到达第一维为L的顶点就不得不停止,因为该顶点没有出边。
假设白兔停止时,跳了m步,白兔会把这只舞曲给记录下来成为一个序列。序列的第i个元素为它第i步经过的边。
问题来了:给定正整数k和,对于每个,求有多少种舞曲(假设其长度为m)满足,且白兔最后停在了坐标第二维为y的顶点?
两支舞曲不同定义为它们的长度(m)不同或者存在某一步它们所走的边不同。
输出的结果对p取模。

输入描述:

第一行六个用空格隔开的整数n,k,L,x,y,p。
接下来n行,每行有n个用空格隔开的整数,第i行的第j个数表示w(i,j)。

输出描述:

依次输出k行,每行一个数表示答案对p取模的结果。
示例1

输入

复制
2 2 3 1 1 998244353
2 1
1 0

输出

复制
16
18

说明

t=0:
    1.路径长度为0,方案数为1。
    2.路径长度为2,一共有六类路径:
        ①(0,1) \to(1,1) \to(2,1)该路径有w(1,1) \times w(1,1)=4条;
        ②(0,1) \to(1,1) \to(3,1)该路径有w(1,1) \times w(1,1)=4条;
        ③(0,1) \to(2,1) \to(3,1)该路径有w(1,1) \times w(1,1)=4条;
       ④ (0,1) \to(1,2) \to(2,1)该路径有w(1,2) \times w(2,1)=1条;
        ⑤(0,1) \to(1,2) \to(3,1)该路径有w(1,2) \times w(2,1)=1条;
        ⑥(0,1) \to(2,2) \to(3,1)该路径有w(1,2) \times w(2,1)=1条;
    答案就为1+4+4+4+1+1+1=16。
t=1:
    1.路径长度为1,一共有三类路径:
        ①(0,1) \to(1,1)该路径有w(1,1)=2条;
        ②(0,1) \to(2,1)该路径有w(1,1)=2条;
        ③(0,1) \to(3,1)该路径有w(1,1)=2条;
    2.路径长度为3,一共有三类路径:
        ①(0,1) \to(1,1) \to(2,1) \to(3,1)该路径有w(1,1) \times w(1,1) \times w(1,1)=8条;
        ②(0,1) \to(1,1) \to(2,2) \to(3,1)该路径有w(1,1) \times w(1,2) \times w(2,1)=2条;
        ③(0,1) \to(1,2) \to(2,1) \to(3,1)该路径有w(1,2) \times w(2,1) \times w(1,1)=2条;
    答案就为2+2+2+8+2+2=18。
示例2

输入

复制
3 4 100 1 3 998244353
1 1 1
1 1 1
1 1 1

输出

复制
506551216
528858062
469849094
818871911

备注:

对于全部数据,p为一个质数,,k为p-1的约数,
对于每组测试点,特殊限制如下:
    测试点1,2:
    测试点3:n=1,w(1,1)=1,k的最大质因子为2;
    测试点4:n=1,k的最大质因子为2;
    测试点5:n=1,w(1,1)=1;
    测试点6:n=1;
    测试点7,8:k的最大质因子为2。