import java.util.Scanner; public class Main { private static boolean[] flags = new boolean[20001]; private static int n; private static void init() { flags[0] = flags[1] = true; for (int i = 2; i < flags.length; i++) { if (!flags[i]) { for (int j = 2 * i; j < flags.length; j += i) { flags[j] = true; } } } } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); n = scanner.nextInt(); init(); int[] f = new int[3]; for (int i = 2; i <= n; i++) { if(!flags[i]) f[0] = i; else { continue; } for (int j = 2; j <= n; j++) { if(!flags[j]) f[1] = j; else { continue; } for (int k = 2; k <=n; k++) { if (!flags[k]&&f[0] + f[1] + k == n) { System.out.println(f[0] + " " + f[1] + " " + k); return; } } } } } } /************************************************************** Problem: 1878 User: admin Language: Java Result: Accepted Time:1651 ms Memory:42644 kb ****************************************************************/