8587340257
 9
 81
 27
 1408514752349
 25
 49380563
 266418
 319757451841
 6599669076000
 8
 1000000000000
 30971726
 274875809788
 64
 34280152201
 236
 472670214391
 7938986881993
 44
 4
 388
 2
 802241960524
 3047527844089
 5
 12
 614125
 1716443237161
 48855707
 99
 9999925100701
 5839252225
 3
 50
 1307514188557
 9999926826034
 1468526771489
 2975
 8110708459517
 401120980262
 5138168457911
 1245373417369
 128
 16
 2000000014
 445538663413
 57461344602
 324
 7420738134810

1
9409 2 1
9 1
9 1
72361 2 1
289 1
6 1
289 1
4 1
4 1
4 2 1
4 1
4 2 1
4 1
23020027 1
378028993 1
4 2 1
4 1
0 1
4 2 1
0 1
4 1
25 1
5329 1
2603 1
9 1
0 1
25 1
0 1
10 1
39283 2 1
613783 1
25 2 2 2 1
908209 1
4 1
4 2 1
0 1
6 1
4 1
6
'''input
445538663413
'''
from sys import stdin, setrecursionlimit
from collections import defaultdict
import math

setrecursionlimit(15000)


def get_prime(n):
	limit = math.ceil(n ** 0.5)
	seive = [True] * (limit + 1)
	for i in range(2, limit + 1):
		if seive[i] == True:
			for j in range(i ** 2, limit + 1, i):
				seive[j] = False

	prime = []
	for i in range(2, limit + 1):
		if seive[i] == True:
			prime.append(i)

	limit = math.ceil(math.sqrt(10 ** 13))
	spf = [x for x in range(limit + 1)]
	for i in range(2, limit + 1):
		if spf[i] == i:
			for j in range(i * i, limit + 1, i):
				if spf[j] == j:
					spf[j] = i
	return prime, spf


# main starts
n = int(stdin.readline().strip())
cn  = n
prime, spf = get_prime(n)
factors =  dict()
for i in prime:
	while n % i == 0:
		if i in factors:
			factors[i] += 1
		else:
			factors[i] = 1
		n //= i
if n == cn:
	print(1)
	print(0)
	exit()
while n > 1:
	if spf[n] in factors:
		factors[spf[n]] += 1
	else:
		factors[spf[n]] = 1
	n //= spf[n]

first = -1
count = 0
for i in factors:
	count += factors[i]
	first = i

#print(count, first, cn // first)
if cn == 1 or count < 2:
	print(1)
	print(0)
elif count == 2:
	print(2)
else:
	print(1)
	print(cn // first)