#P2700. Space Travel

Space Travel

描述

在深空中建造了数量庞大的空间站。能够以接近光速在太空中飞行的宇宙飞船也已投入使用。尽管宇宙飞船可以极快地飞行,但它们不能直接从任意一个空间站飞到另一个空间站。飞船能够到达的空间站取决于控制室中按钮上标记的数字。此外,飞船在每次停靠后必须进行燃料补充,补充燃料的时间为一个单位时间,这比任何两个空间站之间的飞行时间要长得多。

每个空间站都有一个唯一的编号。假设共有nn个空间站,编号从00n1n - 1。宇宙飞船的操作非常简单。飞船内只有两个按钮,每个按钮上标记一个正整数。假设你当前位于空间站ss,按下标记为aa的按钮可以将你传送到空间站(s+a)modn(s + a) \mod n,而按下另一个标记为bb的按钮可以将你传送到空间站(s+b)modn(s + b) \mod n。这两个按钮上的数字在出厂时已设定,无法更改。

位于空间站ss的宇航员接到了一项关键任务。为了执行任务,他们必须以最快的速度前往空间站tt。由于空间站的数量极其庞大,船长无法快速找到前往空间站tt的最佳路径。船长并非编程专家,他尝试了一个简单的程序来搜索解决方案,但该程序计算答案耗时过长。请编写一个高效的程序来为船长解决这个问题。在设计程序时,请注意船长是左撇子,这意味着船长按下标记为aa的按钮比按下标记为bb的按钮要快得多。

输入

每行输入包含55个整数nnaabbsstt,分别表示空间站的数量、飞船上两个按钮标记的数字aabb、飞船当前所在的空间站ss以及目标空间站tt。最后一行以00结束,表示测试数据输入完毕。假设n<231n < 2^{31},且a,b<na, b < n

输出

对于每行输入,输出两个整数xxyy,其中xxyy分别表示飞船从空间站ss到空间站tt所需按下两个按钮的最小次数(以最小延迟为准)。如果有多个解,优先输出xx值较大的解。如果无解,则输出'nono solutionsolution'。

如果存在多个解,首先输出x+yx + y最小的解,其次输出xx最大的解。

输入数据 11

15 2 3 0 1  
43 3 11 1 3  
2147483647 1 2 0 2147483645  
0  

输出数据 11

2 4  
4 3  
1 1073741822  

来源

台湾 2004