#include <bits/stdc++.h>
using namespace std;
const int N = 1000 + 5;
bool isPrime(int n) {
  for (int i = 2; 1ll * i * i <= n; ++i) {
    if (n % i == 0) return false;
  }
  return true;
}
int main() {
  int n;
  scanf("%d", &n);
  if (isPrime(n)) {
    printf("1\n%d\n", n);
  } else if (isPrime(n - 2)) {
    printf("2\n2 %d\n", n - 2);
  } else {
    int origin = n;
    while (!isPrime(--n))
      ;
    for (int i = 2; i < 500; ++i) {
      for (int j = 2; j < 500; ++j) {
        if (i + j == origin - n && isPrime(i) && isPrime(j)) {
          printf("3\n%d %d %d\n", n, i, j);
          return 0;
        }
      }
    }
  }
  return 0;
}
