#include <bits/stdc++.h>
using namespace std;
template <class T>
inline bool fs(T &x) {
  int c = getchar();
  int sgn = 1;
  while (~c && c < '0' || c > '9') {
    if (c == '-') sgn = -1;
    c = getchar();
  }
  for (x = 0; ~c && '0' <= c && c <= '9'; c = getchar()) x = x * 10 + c - '0';
  x *= sgn;
  return ~c;
}
int l, n;
vector<long long> v;
bool ara[100009] = {false};
void rec() {
  int i, j;
  ara[0] = ara[1] = true;
  for (i = 2; i * i <= 100000; i++) {
    if (!ara[i]) {
      for (j = i * 2; j <= 100000; j += i) ara[j] = true;
    }
  }
  for (i = 2; i <= 100000; i++) {
    if (ara[i] == false) v.push_back(i);
  }
  l = v.size();
}
int rec2(int a) {
  int i;
  for (i = 0; i < l && v[i] * v[i] <= a; i++) {
    if (a % v[i] == 0) return 1;
  }
  return 0;
}
int main() {
  rec();
  fs(n);
  if (n <= 5) {
    printf("1\n%d\n", n);
    return 0;
  }
  int a, b;
  for (int i = 1; i < l && v[i] < n; i++) {
    a = n - v[i];
    a /= 2;
    b = rec2(a);
    if (b == 0) {
      printf("3\n");
      printf("%d %d %d\n", a, a, v[i]);
      break;
    }
  }
  return 0;
}
