package main
import (
"os"
"bufio"
"fmt"
)
var reader *bufio.Reader = bufio.NewReader(os.Stdin)
var writer *bufio.Writer = bufio.NewWriter(os.Stdout)
func
printf(f string
, a ...
interface{}) { fmt.
Fprintf(writer
, f
, a...
) }func
scanf(f string
, a ...
interface{}) { fmt.
Fscanf(reader
, f
, a...
) }func ifc(x int) int{ return flag[x>>6]&(1<<uint8((x>>1)&31)) }
func isc(x int){ flag[x>>6]|=(1<<uint8((x>>1)&31)) }
const MAX = 100000011;
var primes [MAX>>2] int;
var flag [MAX>>6+10]int;
var len int;
func
pow(p
int64, n
int) int64{ var a int64 = 1;
for n > 0 {
if n % 2 == 1{
a = a * p;
}
p = p * p;
n = n >> 1;
}
return a;
}
func criba() {
for i := 3; i*i < MAX; i+=2 {
if ifc(i) == 0{
for j := i*i; j < MAX; j+=i<<1 {
isc(j)
}
}
}
k := 0
primes[k] = 2;k++;
for i := 3; i < MAX; i+=2 {
if ifc(i) == 0{
primes[k] = i;k++;
}
}
len = k-1
}
func solve(N int64) int64{
var ans int64 = 1;
for i := 0; int64(primes[i] * primes[i]) <= N && i < len; i++ {
if N % int64(primes[i]) == 0{
cnt := 0;
for N % int64(primes[i]) == 0 {
cnt += 1;
N /= int64(primes[i]);
}
ans
*= (pow(int64(primes
[i
]), cnt
+1) -1)/ int64(primes
[i
] - 1) }
}
if N > 1 { ans *= (N * N -1 ) / (N - 1); }
return ans;
}
func main() {
defer writer.Flush()
criba()
var n int;
var N int64;
for i := 0; i < n; i++ {
}
}
cGFja2FnZSBtYWluCgppbXBvcnQgKAogICJvcyIJCiAgImJ1ZmlvIgogICJmbXQiCikKCnZhciByZWFkZXIgKmJ1ZmlvLlJlYWRlciA9IGJ1ZmlvLk5ld1JlYWRlcihvcy5TdGRpbikKdmFyIHdyaXRlciAqYnVmaW8uV3JpdGVyID0gYnVmaW8uTmV3V3JpdGVyKG9zLlN0ZG91dCkKZnVuYyBwcmludGYoZiBzdHJpbmcsIGEgLi4uaW50ZXJmYWNle30pIHsgZm10LkZwcmludGYod3JpdGVyLCBmLCBhLi4uKSB9CmZ1bmMgc2NhbmYoZiBzdHJpbmcsIGEgLi4uaW50ZXJmYWNle30pIHsgZm10LkZzY2FuZihyZWFkZXIsIGYsIGEuLi4pIH0KZnVuYyBpZmMoeCBpbnQpIGludHsgcmV0dXJuIGZsYWdbeD4+Nl0mKDE8PHVpbnQ4KCh4Pj4xKSYzMSkpIH0KZnVuYyBpc2MoeCBpbnQpeyBmbGFnW3g+PjZdfD0oMTw8dWludDgoKHg+PjEpJjMxKSkgfQoKY29uc3QgTUFYID0gMTAwMDAwMDExOwp2YXIgcHJpbWVzIFtNQVg+PjJdIGludDsKdmFyIGZsYWcgW01BWD4+NisxMF1pbnQ7CnZhciBsZW4gaW50OwoKZnVuYyBwb3cocCBpbnQ2NCwgbiBpbnQpIGludDY0ewoJdmFyIGEgaW50NjQgPSAxOwoJZm9yIG4gPiAwIHsKCQlpZiBuICUgMiA9PSAxewoJCQlhID0gYSAqIHA7CgkJfQoJCXAgPSBwICogcDsKCQluID0gbiA+PiAxOwoJfQoJcmV0dXJuIGE7Cn0KCgpmdW5jIGNyaWJhKCkgewoJZm9yIGkgOj0gMzsgaSppIDwgTUFYOyBpKz0yIHsKCQlpZiBpZmMoaSkgPT0gMHsKCQkJZm9yIGogOj0gaSppOyBqIDwgTUFYOyBqKz1pPDwxIHsKCQkJCWlzYyhqKQoJCQl9CgkJfQoJfQoJayA6PSAwCglwcmltZXNba10gPSAyO2srKzsKCWZvciBpIDo9IDM7IGkgPCBNQVg7IGkrPTIgewoJCWlmIGlmYyhpKSA9PSAwewoJCQlwcmltZXNba10gPSBpO2srKzsKCQl9Cgl9CglsZW4gPSBrLTEKfQoKZnVuYyBzb2x2ZShOIGludDY0KSBpbnQ2NHsKCXZhciBhbnMgaW50NjQgPSAxOwoJZm9yIGkgOj0gMDsgaW50NjQocHJpbWVzW2ldICogcHJpbWVzW2ldKSA8PSBOICYmIGkgPCBsZW47IGkrKyB7CgkJaWYgTiAlIGludDY0KHByaW1lc1tpXSkgPT0gMHsKCQkJY250IDo9IDA7CgkJCWZvciBOICUgaW50NjQocHJpbWVzW2ldKSA9PSAwIHsKCQkJCWNudCArPSAxOwoJCQkJTiAvPSBpbnQ2NChwcmltZXNbaV0pOwoJCQl9CgkJCWFucyAqPSAocG93KGludDY0KHByaW1lc1tpXSksIGNudCArMSkgLTEpLyBpbnQ2NChwcmltZXNbaV0gLSAxKQoJCX0KCX0KCWlmIE4gPiAxIHsgCWFucyAqPSAoTiAqIE4gLTEgKSAvIChOIC0gMSk7IH0KCXJldHVybiBhbnM7Cn0KCgpmdW5jIG1haW4oKSB7CiAgZGVmZXIgd3JpdGVyLkZsdXNoKCkKICBjcmliYSgpCiAgdmFyIG4gaW50OwogIHZhciBOIGludDY0OwogIHNjYW5mKCIlZFxuIiwgJm4pOwogIGZvciBpIDo9IDA7IGkgPCBuOyBpKysgewogIAlzY2FuZigiJXZcbiIsICZOKTsKICAJcHJpbnRmKCIldlxuIiwgc29sdmUoTikgLSBOKTsKICB9Cn0gCg==