#include <bits/stdc++.h>
using namespace std;
unsigned long long random(unsigned long long n) {
  return (unsigned long long)((double)rand() / RAND_MAX * n + 0.5);
}
unsigned long long qml(unsigned long long a, unsigned long long b,
                       unsigned long long m) {
  unsigned long long s = 0;
  while (b) {
    if (b & 1) s = (s + a) % m;
    a = (a + a) % m, b /= 2;
  }
  return s;
}
unsigned long long mypow(unsigned long long a, unsigned long long b,
                         unsigned long long m) {
  unsigned long long s = 1;
  while (b) {
    if (b & 1) s = qml(s, a, m);
    a = qml(a, a, m), b /= 2;
  }
  return s;
}
bool Miller_Rabbin(unsigned long long x) {
  if (x == 2) return true;
  for (int i = 1; i <= 11; ++i) {
    unsigned long long a = rand() % (x - 2) + 2;
    if (mypow(a, x - 1, x) != 1) return false;
  }
  return true;
}
int main() {
  int n;
  while (cin >> n) {
    if (Miller_Rabbin(n)) {
      cout << "1" << endl << n << endl;
    } else {
      cout << "3" << endl;
      n -= 3;
      for (int i = 2; i < n; i++) {
        if (Miller_Rabbin(i) && Miller_Rabbin(n - i)) {
          cout << "3 " << i << " " << n - i << endl;
          break;
        }
      }
    }
  }
  return 0;
}
