#include <bits/stdc++.h>
const double EPS = 1e-9;
const int MOD = 1000 * 1000 * 1000 + 7;
const int INF = 2000 * 1000 * 1000;
using namespace std;
int popcount(int n) {
  bitset<32> b(n);
  return b.count();
}
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
bool ispr(int p) {
  if (p == 0 || p == 1) return false;
  for (int i = 2; i * i <= p; i++)
    if (p % i == 0) return 0;
  return 1;
}
int main() {
  int n;
  cin >> n;
  int fr, sec, thr;
  for (int i = n; i >= 0; i--) {
    if (ispr(i)) {
      fr = i;
      break;
    }
  }
  n -= fr;
  if (n == 0) {
    cout << 1 << endl << fr << endl;
    return 0;
  }
  bool one, two;
  for (int i = 2; i <= n; i++) {
    one = ispr(i);
    two = ispr(n - i);
    if (one && two) {
      sec = i;
      thr = n - i;
      cout << 3 << endl << fr << " " << sec << " " << thr << endl;
      break;
    } else if (one && i == n) {
      sec = i;
      cout << 2 << endl << fr << " " << sec << endl;
      break;
    }
  }
  return 0;
}
