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

//MohammedElkady
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
public class Hell {
static long ans,sum=1L,x;

    public static void main(String[] args) {
        Reader in =new Reader();
        long q=in.l();
        if(is_prim(q))
            System.out.println("0");
        else{
            
                
        for(long i=3;i<=q;i+=2){
        while(q%i==0){ans++;q/=i;sum*=i;x=i;}
        }
        while(q%2==0){q/=2;ans++;sum*=2;}
        if(ans==2)System.out.println("2");
        else{System.out.println("1");System.out.println(sum/x);}
        }
        
}
    static boolean is_prim(long x){
    if(x%2==0)return false;
    for(long i=3;i*i<=x;i+=2)
    if(x%i==0)return false;
    
    return true;
    }
 static class Reader 
    { 
        private InputStream mIs;private byte[] buf = new byte[1024];private int curChar,numChars;public Reader() { this(System.in); }public Reader(InputStream is) { mIs = is;} 
        public int read() {if (numChars == -1) throw new InputMismatchException();if (curChar >= numChars) {curChar = 0;try { numChars = mIs.read(buf);} catch (IOException e) { throw new InputMismatchException();}if (numChars <= 0) return -1; }return buf[curChar++];} 
        public String nextLine(){int c = read();while (isSpaceChar(c)) c = read();StringBuilder res = new StringBuilder();do {res.appendCodePoint(c);c = read();}while (!isEndOfLine(c));return res.toString() ;} 
        public String s(){int c = read();while (isSpaceChar(c)) c = read();StringBuilder res = new StringBuilder();do {res.appendCodePoint(c);c = read();}while (!isSpaceChar(c));return res.toString();} 
        public long l(){int c = read();while (isSpaceChar(c)) c = read();int sgn = 1;if (c == '-') { sgn = -1 ; c = read() ; }long res = 0; do{ if (c < '0' || c > '9') throw new InputMismatchException();res *= 10 ; res += c - '0' ; c = read();}while(!isSpaceChar(c));return res * sgn;} 
        public int nextInt(){int c = read() ;while (isSpaceChar(c)) c = read();int sgn = 1;if (c == '-') { sgn = -1 ; c = read() ; }int res = 0;do{if (c < '0' || c > '9') throw new InputMismatchException();res *= 10 ; res += c - '0' ; c = read() ;}while(!isSpaceChar(c));return res * sgn;} 
        public double d() throws IOException {return Double.parseDouble(s()) ;}
        public boolean isSpaceChar(int c) { return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1; } 
        public boolean isEndOfLine(int c) { return c == '\n' || c == '\r' || c == -1; } 
        public int[] arr(int n){int[] ret = new int[n];for (int i = 0; i < n; i++) {ret[i] = nextInt();}return ret;}
    }   
}
class HashTable{
List[]Table;
HashTable(int size){
Table=new List[size];
while(size-->0){
Table[size]=new ArrayList();
}
}
void Hashing(int kay,int value){
Table[kay].add(value);
}
void Delet(int key,int value){
for(int i=0;i<Table[key].size();i++)
    if(value==(int)Table[key].get(i)){
        Table[key].remove(i);i--;}
}
ArrayList getTable(int key){
    return (ArrayList) Table[key];

}
void Uptodate(int key ,int value , int nextvalue){
for(int i=0;i<Table[key].size();i++)
    if(Table[key].get(i).equals(value)){
        Table[key].remove(i);Table[key].add(nextvalue);i--;}

}
}