#include <bits/stdc++.h>
bool isprime(int n) {
  for (int i = 2; i * i <= n; i++)
    if (n % i == 0) return false;
  return true;
}
int num[2000][2];
bool mark[1005];
int main() {
  int i, j;
  for (i = 2; i < 1000; i++) {
    for (j = i + i; j < 1000; j += i) mark[j] = true;
  }
  for (i = 2; i < 1000; i++) {
    if (mark[i]) continue;
    for (j = 2; j < 1000; j++)
      if (!mark[j]) num[i + j][0] = i, num[i + j][1] = j;
  }
  int n;
  scanf("%d", &n);
  for (i = n;; i--) {
    if (isprime(i)) break;
  }
  if (i == n)
    printf("1\n%d\n", n);
  else if (n - i == 2)
    printf("2\n%d %d\n", n - 2, 2);
  else
    printf("3\n%d %d %d\n", i, num[n - i][0], num[n - i][1]);
  return 0;
}
