import java.io.FileNotFoundException;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

/**
 *
 * @author sorin
 */
public class prog {

    public static void main(String[] args) throws FileNotFoundException {
       // File homedir = new File(System.getProperty("user.home"));

        // Scanner scanner = new Scanner(new File(homedir, "/Downloads/A-large.in"));
        Scanner scanner = new Scanner(System.in);
        long l = scanner.nextLong();
        if (l == 3) {
            System.out.println("2");
        } else if (l == 4) {
            System.out.println("2");
        } else if (l == 5) {
            System.out.println("4");
        } else if (isPrime(l)) {
            System.out.println(l - 1);
        } else {
            System.out.println("0");
        }
    }

    private static boolean isPrime(long n) {
        for (long l = 2; l < n /2 ; l++) {
            if (n % l == 0) return false;
        } 
        return true;
    }

}

/*
 int n = scanner.nextInt();
 int a = scanner.nextInt();
 int b = scanner.nextInt();
            
 PriorityQueue<Integer> heap = new PriorityQueue<>();
 heap.add(0);
 for (int i = 0; i < n; i++) {
 int min = heap.remove();
 heap.add(min + a);
 heap.add(min + b);
 }
 // System.out.println(heap.remove());    
            
 int totalAddedNodes = 1;  int countLevel = 0; int[] allNodesAtLevel = new int[100000]; allNodesAtLevel[0] = 1;            
 while (totalAddedNodes < n) {         
 countLevel++;
 int minimNodesA = allNodesAtLevelMinus(allNodesAtLevel, countLevel - a);
 int minimNodesB = allNodesAtLevelMinus(allNodesAtLevel, countLevel - b);
 int resultForALevel = minimNodesA + minimNodesB;               
 totalAddedNodes += resultForALevel;                
 allNodesAtLevel[countLevel] = resultForALevel;              
 }
 System.out.println(countLevel);        
 }
 }

 private static int allNodesAtLevelMinus(int[] allNodesAtLevel, int index) {
 if (index < 0) return 0;
 return allNodesAtLevel[index];
 } 
 }  */