#include <bits/stdc++.h>
using namespace std;
int homiara[31] = {2,  3,  5,  7,   11,  13,  17,  19,  23, 29, 31,
                   37, 41, 43, 47,  53,  59,  61,  67,  71, 73, 79,
                   83, 89, 97, 101, 103, 107, 109, 113, 127};
int main() {
  bool flag = 0;
  int n, k, x, y, z, s, p;
  cin >> n;
  s = n;
  bitset<31623> sadek;
  set<int> m;
  sadek.flip();
  int romel = sqrt(31623) + 1;
  for (int i = 2; i < romel; i++)
    if (sadek.test(i))
      for (int j = 2 * i; j < 31623; j += i) sadek.reset(j);
  for (int i = 2; i < 31623; i++)
    if (sadek.test(i)) m.insert(i);
  set<int>::iterator i;
  while (1) {
    flag = 0;
    for (i = m.begin(); i != m.end(); ++i) {
      if (n <= *i) break;
      if ((n % (*i)) == 0) {
        if (n == *i) break;
        flag = 1;
        break;
      }
    }
    if (flag == 0) break;
    n -= 2;
  }
  x = n;
  n = s - n;
  if (n == 0) {
    cout << 1 << endl;
    cout << s;
    return 0;
  }
  for (i = m.begin(); i != m.end(); ++i) {
    if (n == *i) {
      cout << 2 << endl;
      cout << x << " " << *i;
      return 0;
    }
  }
  set<int>::iterator j;
  for (i = m.begin(); i != m.end(); ++i) {
    for (j = m.begin(); j != m.end(); ++j)
      if ((*i + *j) == n) {
        cout << 3 << endl;
        cout << x << " " << *i << " " << *j;
        return 0;
      }
  }
}
