#include <bits/stdc++.h>
using namespace std;
int i, n, d[100001], j, p[100010], from[100001];
bool prime(int x) {
  if (x <= 1) return 0;
  if (x == 2) return 1;
  for (int j = 2; j * j <= x; j++)
    if (x % j == 0) return 0;
  return 1;
}
int main() {
  cin >> n;
  for (i = 2; i <= 1000; i++)
    if (d[i] == 0)
      for (j = 2 * i; j <= 1000; j += i) {
        d[j]++;
      }
  for (i = 2; i <= 1000; i++)
    for (j = i; j <= 1000; j++)
      if (d[i] == 0 && d[j] == 0) p[i + j] = 1, from[i + j] = i;
  if (prime(n)) {
    cout << 1 << endl << n;
    return 0;
  }
  if (prime(n - 2)) {
    cout << 2 << endl << n - 2 << " " << 2;
    return 0;
  }
  for (i = 1; i <= 2000; i++) {
    if (p[i] == 0) continue;
    if (prime(n - i)) {
      cout << 3 << endl
           << n - i << " " << from[i] << " " << i - from[i] << endl;
      return 0;
    }
  }
  cout << -1;
  return 0;
}
