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