Fermat's 4n+1 Theorem

2 secs 1024 MB
YSatUT's icon YSatUT

注:用いる数字が大きいため、Pythonなどの多倍長整数に対応した言語を使って下さい。

問題文

ppを素数とします。x2+y2=px^2+y^2=pかつ0xy0\leq x\leq yを満たす整数(x,y)(x,y)の組があればそれを出力し、無ければ-1を出力して下さい。なお、全てのppに対して条件を満たす整数(x,y)(x,y)の組の数は高々1つであることが証明されています。

制約

  • 2p10182\leq p\leq 10^{18}
  • ppは素数である。

入力

入力は以下の形式で与えられます。

p

出力

条件を満たす(x,y)(x,y)の組がある場合、それを以下の形式で出力して下さい。

a b

条件を満たす組がない場合は、'-1'を出力して下さい。

サンプル

入力1
2
出力1
1 1

12+12=21^2+1^2=2となります。

入力2
3
出力2
-1

条件を満たす(x,y)(x,y)の組が存在しないこともあります。

入力3
141461708576723581
出力3
71171845 369318666

オーバーフローに注意して下さい。

提出


Go (1.21)