#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
const int Inf = 0x3f3f3f3f;
int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || '9' < ch) {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while ('0' <= ch && ch <= '9') x = x * 10 + ch - 48, ch = getchar();
  return x * f;
}
int n, k;
int main() {
  n = read();
  k = 0;
  int ans[4];
  bool flag;
  for (int i = n; i >= 1; --i) {
    flag = false;
    int j, lim;
    for (j = 2, lim = sqrt(i); j <= lim; ++j)
      if (i % j == 0) {
        flag = true;
        break;
      }
    if (!flag) {
      ans[++k] = i;
      n -= i;
      break;
    }
  }
  if (!n) goto putans;
  for (int i = n; i >= 2; --i) {
    int j, lim;
    if ((n - i) == 1) continue;
    flag = false;
    for (j = 2, lim = sqrt(i); j <= lim; ++j)
      if (i % j == 0) {
        flag = true;
        break;
      }
    if (flag) continue;
    flag = false;
    for (j = 2, lim = sqrt(n - i); j <= lim; ++j)
      if ((n - i) % j == 0) {
        flag = true;
        break;
      }
    if (flag) continue;
    if (i) ans[++k] = i;
    if (n - i) ans[++k] = n - i;
    break;
  }
putans:
  printf("%d\n", k);
  for (int i = 1; i <= k; ++i) printf("%d ", ans[i]);
  return 0;
}
