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
//</></>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</></>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> </>//</> <
#include<bits/stdc++.h>

#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;


#define ff          first
#define ss          second
#define pb          push_back
#define mp          make_pair
#define pii         pair<int,int>
#define vi          vector <int>
#define mii         map <int,int>
#define mxhi        priority_queue<int>
#define mnhi        priority_queue<int,vi,greater<int> >
#define mod         1000000007
#define setbits(x)  __builtin_popcountll(x)
#define zrobits(x)  __builtin_ctzll(x)   //no of zero bits befor the first set bits
#define inf         1e18
#define ps(x,y)     fixed<<setprecision(y)<<x
#define w(x)        int x; cin>>x; while(x--)
#define int         long long
vector<int> pn;
template<typename T>
class graph
{
    map<T,list<T> > l;
public:
    void addedge(T x,T y)
    {

        l[x].push_back(y);
        l[y].push_back(x);
    }
    void dfs_helper(T src,map <T,bool> &visited,int count=0)   // passing bby address is necessary like 1
    {

        cout<<src<<" ";
        visited[src]=true;
        bool ikv=false;
        for(auto x:l[src])
        {

            if(visited[x]==0)
            {  ikv=true;

                dfs_helper(x,visited,count+1);
            }
        }

            
    }

    void dfs(T src)
    {



        map<T,bool> visited;
        for(auto x:l)
        {

            visited[x.first]=false;

        }
        dfs_helper(src,visited);


    }
    void bfs(T src)
    {
        queue <T> q;
        map<T,int> m;
        for(auto x:l)
        {

            m[x.first]=INT_MAX;
        }
        q.push(src);
        m[src]=0;
        while(!q.empty())
        {

            T top=q.front();
            q.pop();
          //  cout<<top<<" ";
            for(auto nbr:l[top])
            {
                if(m[nbr]==INT_MAX)
                {

                    q.push(nbr);
                    m[nbr]=m[top]+1;
                }

            }
        }
                

    }
void print()
    {

        for(auto p:l)
        {

            cout<<p.first<<"-> ";
            for(auto nbr:l.second)
            {

                cout<<nbr<<" ";
            }
            cout<<endl;
        }
    }


};
// void calncr()
// {
//      for(int n = 0 ; n <= 2000 ; ++n){
//         for(int r = 0 ; r <= n ;++r){
//             if(n==r){
//                 C[n][r] = 1; 
//             }
//             else if(r == 0){
//                 C[n][r] = 1 ; 
//             }
//             else if(r == 1){
//                 C[n][r] = n; 
//             }
//             else{
//                 C[n][r] = C[n-1][r] + C[n-1][r-1] ; 
//             }
//          //   if(n<=10 and r <= 10)
//           //  cout << n << " " << r << " " << C[n][r] << "\n" ; 
//         }
//     }
// }
bool prime[10000000+1]; 
void SieveOfEratosthenes(int n) 
{   
    memset(prime, true, sizeof(prime)); 
  
    for (int p=2; p*p<=n; p++) 
    { 
        
        if (prime[p] == true) 
        { 
         
        for (int i=p*p; i<=n; i += p) 
                prime[i] = false; 
        } 
    } 
    for (int p=2; p<=n; p++) 
       if (prime[p]) 
         pn.pb(p);
} 
int fp(int a,int n)
{
    int ans=1;
    while(n>0)
    {
        bool lb=n&1;
        if(lb)
            ans=(ans*a);
        a=(a*a);
        n=n>>1;
    }
    return ans;
}
typedef tree<int,null_type,less<int>,rb_tree_tag,
        tree_order_statistics_node_update>
        PBDS;
void i_n()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    #ifndef ONLINE_JUDGE
            freopen("input.txt","r",stdin);
            freopen("output.txt","w",stdout);
    #endif
}
bool isprime(int no)
{
	for(int i=2;i<=sqrt(no);i++)
	{
		if(!(no%i))
			return 0;
	}
	return 1;
}
void solve()
{
   int q;
   cin>>q;
   if(q==1)
   {
   	cout<<1<<endl<<0<<endl;
   	return ;
   }
   int cnt=0;
   for(int i=2;i<=sqrt(q);i++)
   {	if(q%i==0)
   	cnt++;
   		if(prime[i]&&!(q%i))
   		{
   			int no=q/i;
   			
   			if(!isprime(no))
   			{
   				cout<<1<<endl;
   				cout<<no<<endl;
   				return ;
   			}
   			else
   			{
   				cout<<2<<endl;
   				return ;
   			}

   		}
   }
   if(!cnt)
   {
   	 cout<<1<<endl<<0<<endl;
   	return ;
   }
   cout<<2<<endl;

}
main()
{
    i_n();
   
    SieveOfEratosthenes(4000000);
    solve();
    

}
