SWARM - Swarm of Polygons

no tags 

There is a regular n-gon. Some points are marked on each of its sides. There are x1 point marked on the first side, x2 – on the second, …, xn – on the nth. The marked points do not coincide with the vertices of the n-gon. You can choose no more than one of the marked points from each side and form a convex non-degenerate polygon by connecting all those points with lines. Now your task is to find the number of different k-gons that can be formed that way.

Input

The first line of input file contains positive integer t – the amount of test cases. Next t lines contain six integers each: n, k, a, b, c, m. Here n is the number of sides of the initial n-gon. The amount of marked points on the first side of this n-gon is x1 = a, the amount of the marked points on the following sides is xi = (b*xi-1 + c) mod m, for i > 1.

Constraints

1 <= t <= 30
3 <= n <= 109
3 <= k <= 20
1 <= b, c, m <= 106
0 <= a < m

Output

For each test case output the number of k-gons that can be formed modulo 1000000007.

Example

Input:
2
4 3 1 2 2 191
10 5 1 113 157 999991

Output:
1228
328836201

hide comments
[Rampage] Blue.Mary: 2011-08-25 03:28:46

I think before you solve this you may try problem NGON first.


Added by:Spooky
Date:2011-08-24
Time limit:2.507s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: ASM64
Resource:CodeChef August 2010 Long Contest