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")); /*Set set = new HashSet<>(); for(int nr = 1000000000; nr >= 300000000; nr--) { if (isPrime(nr)) System.out.println( "set.add(" +nr+");"); }*/ 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 < Math.log(n) ; l++) { if (n % l == 0) return false; } return true; } } /* int n = scanner.nextInt(); int a = scanner.nextInt(); int b = scanner.nextInt(); PriorityQueue 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]; } } */