#include <bits/stdc++.h>
using namespace std;
bool isPrime(unsigned long long int n) {
  if (n <= 1) return false;
  if (n <= 3) return true;
  if (n % 2 == 0 || n % 3 == 0) return false;
  for (unsigned long long int i = 5; i * i <= n; i = i + 6)
    if (n % i == 0 || n % (i + 2) == 0) return false;
  return true;
}
int main() {
  unsigned long long int i, j;
  bool prime[305];
  memset(prime, true, sizeof(prime));
  for (int p = 2; p * p <= 300; p++) {
    if (prime[p] == true) {
      for (int i = p * 2; i <= 300; i += p) prime[i] = false;
    }
  }
  unsigned long long int n;
  cin >> n;
  if (n == 3) {
    cout << "1" << endl << "3";
  } else if (isPrime(n - 2)) {
    cout << "2" << endl
         << n - 2 << " "
         << "2";
  } else {
    cout << "3" << endl;
    unsigned long long int num = n;
    while (n--) {
      if (isPrime(n)) {
        break;
      }
    }
    cout << n << " ";
    unsigned long long int temp = num - n;
    for (i = 2; i <= 300; i++) {
      if (prime[i] && prime[temp - i]) {
        cout << i << " " << temp - i;
        break;
      }
    }
  }
  return 0;
}
