#include <bits/stdc++.h>
using namespace std;
bool primes[1000];
void Seive(int n) {
  primes[0] = primes[1] = true;
  for (int i = 2; i * i < n; i++) {
    if (!primes[i]) {
      for (int j = i * i; j < n; j += i) primes[j] = true;
    }
  }
}
bool isPrime(int n) {
  if (n == 3 || n == 5) return 1;
  if (n % 3 == 0) return 0;
  if (n % 5 == 0) return 0;
  int sq = sqrt(n) + 1;
  for (int i = 7; i <= sq; i += 2) {
    if (n % i == 0) return 0;
  }
  return 1;
}
int main() {
  int n, i = 0;
  scanf("%d", &n);
  while (true) {
    if (isPrime(n)) {
      break;
    }
    n -= 2;
    i++;
  }
  Seive(2 * i);
  int r = 2 * i;
  if (i >= 2) {
    for (int i = 2; i < r; i++) {
      if (!primes[i] && !primes[r - i]) {
        cout << 3 << endl << n << " " << i << " " << r - i << endl;
        break;
      }
    }
  } else if (i == 1) {
    cout << 2 << endl << n << " " << 2;
  } else if (i == 0)
    cout << 1 << endl << n;
}
