package main import . "fmt" import . "os" import bf "bufio" import . "math/big" func main() { rd := bf.NewReader(Stdin) wr := bf.NewWriter(Stdout) defer wr.Flush() var t int Fscan(rd,&t) for ; t > 0; t-- { var a string var p Int Fscan(rd,&a,&p) if p.ProbablyPrime(0) { Fprintln(wr, "1") } else { Fprintln(wr, "-1") } } } /* 考察 フェルマーの小定理より Pが素数なら(mod P)は(P-1)乗で1になり、階乗であるP!は(P-1)を含むので Pが素数なら1、合成数なら-1を出力する…? エラトステネスの篩で素数を事前に求めておいてO(1)で判定するが想定解ぽそうだけど math/bigの素数判定で処理した場合は間に合うかなあ…? ミラーレビンってやつだっけ? */