#include <bits/stdc++.h>
using namespace std;
int n;
bool bp[1001] = {0};
vector<int> p;
bool isPrime(int t) {
  if (t <= 1) return false;
  if (t <= 3) return true;
  if (t % 2 == 0 || t % 3 == 0) return false;
  for (int i = 5; i * i <= t; i = i + 6)
    if (t % i == 0 || t % (i + 2) == 0) return false;
  return true;
}
int main() {
  cin >> n;
  if (n < 4 || isPrime(n)) {
    cout << 1 << '\n' << n;
    return 0;
  }
  for (int i = 2; i < 1001; i++) {
    if (bp[i]) continue;
    p.push_back(i);
    for (int j = i; j < 1001; j += i) bp[j] = 1;
  }
  int t1;
  for (int i = n - 1; i > 1; i--)
    if (isPrime(i)) {
      t1 = i;
      break;
    }
  int k = n - t1;
  if (isPrime(k)) {
    cout << 2 << '\n' << k << ' ' << t1;
  }
  for (int i = 0; i < p.size(); i++) {
    for (int j = 0; j < p.size(); j++) {
      if (p[i] + p[j] == k) {
        cout << 3 << '\n' << t1 << ' ' << p[i] << ' ' << p[j];
        return 0;
      }
    }
  }
  return 0;
}
