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
****************************************************************/