[SDOI2013]随机数生成器
题号:NC20362
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小W喜欢读书,尤其喜欢读《约翰克里斯朵夫》。最近小W准备读一本新书,这本书一共有P页,页码范围为0P1

小W很忙,所以每天只能读一页书。为了使事情有趣一些,他打算使用NOI2012上学习的线性同余法生成一个序列,来决定每天具体读哪一页。

我们用Xi来表示通过这种方法生成出来的第i个数,也即小Wi天会读哪一页。这个方法需要设置3个参数a,b,X1,满足0a,b,X1p1,且a,b,X1都是整数。按照下面的公式生成出来一系列的整数:Xi+1aXi+b(mod p)其中mod表示取余操作。

但是这种方法可能导致某两天读的页码一样。

小W要读这本书的第t页,所以他想知道最早在哪一天能读到第t页,或者指出他永远不会读到第t页。

输入描述:

输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数。    
接下来T行,每行有五个整数p,a,b,X1,t,表示一组数据。保证X1和t都是合法的页码。 
注意:P一定为质数

输出描述:

共T行,每行一个整数表示他最早读到第t页是哪一天。如果他永远不会读到第t页,输出-1。
示例1

输入

复制
3 
7  1 1 3 3
7  2 2 2 0
7  2 2 2 1

输出

复制
1
3
-1

备注:

对于全部的测试点,保证:


p为质数。