graph

Accepts: 9
Submissions: 61
Time Limit: 8000/4000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
Problem Description
In a directed graph which has $N$ points and $M$ edges,points are labled from 1 to n.At first I am at point $u$,at each step I will choose an output edge of the current point at uniform random,for every point $Z$,please output the possibility of reaching the point $Z$,moving exactly $K$ steps.
Input
the first line contains two positive interges$N,M$,means the number of points and edges. next $M$ lines,contains two positive intergers$X,Y$,means an directed edge from X to Y. next line there is an integer $Q$,means the number of queries. next $Q$ lines,each line contains two integers $u,K$,means the first point and number of the steps. $N\le 50,M\le 1000,Q\le 20,u\le N,K\le 10^9$. Every point have at least one output edge.
Output
$Q$ lines,each line contains $N$ numbers,the $i$-th number means the possibility of reaching point $i$ from $u$,moving exactly $K$ steps. In consideration of the precision error,we make some analyses,finding the answer can be represented as the form like $\frac{X}{Y}$,you only need to output $X\times Y^{10^9+5}~mod~(10^9+7)$. You need to output an extra space at the end of the line,or you will get PE.
Sample Input
3 2
1 2
1 3
1
1 1
Sample Output
0 500000004 500000004 

I am now at point $1$,by one move,with a possibity of $\frac{1}{2}$ of reaching point 2,with a possibity of $\frac{1}{2}$ of reaching point 3,so we need to output 0 0.5 0.5,but as what is said above,we need to output$1*2^{10^9+5}~mod~{10^9+7}=500000004$.