如今,每个人都听说过机器学习、神经网络和大数据。学生 Oleg 也不例外,他也想紧跟潮流。他开始努力使用 Python 分析各种数据集。来到联合办公空间,为神经网络增加几层,然后靠在椅子上,一边喝着冰沙,一边看着电脑处理数千兆字节的数据,这感觉真是太棒了!但今天,出了一些问题,Oleg 向你寻求帮助。
最初,他有一个包含重要数据的数组 $a$:从 $L$ 到 $R$(包含 $L$ 和 $R$)的所有整数。然后,Oleg 写了一个函数 $f(a, m)$,它返回一个新数组,其中每个整数都被替换为其对 $m$ 取模后的余数。最后,Oleg 误操作并执行了代码行 $a = f(a, Q)$,从而替换了原始数组 $a$!为了评估这场悲剧的规模,他想要计算有多少个正整数 $X$ 满足:无论原始数组 $a$ 的内容如何,函数 $f(a, X)$ 的结果都与 Oleg 没有执行那行错误代码时的结果相同。
如果问题还不清楚,这里是数学表述。要求计算满足以下条件的正整数 $X$ 的个数:对于区间 $[L, R]$ 中的所有整数 $S$,下式恒成立: $$((S \bmod Q) \bmod X) = (S \bmod X)$$
输入格式
仅一行,包含三个用空格分隔的整数:$L, R$ 和 $Q$ ($1 \le L, R, Q \le 10^{12}, L \le R$)。
输出格式
如果满足条件的正整数 $X$ 的个数是有限的,请输出该个数。否则,输出单词 “infinity”。
样例
输入 1
1 1 1
输出 1
1
输入 2
3 5 2
输出 2
2
输入 3
1 10 10
输出 3
4
输入 4
1 1 2
输出 4
infinity