#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 100;
const long long int base = 313;
const long long int mod = 1e9 + 7;
const long long int inf = 1e16;
bool mark[N];
vector<int> pr;
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int n;
  cin >> n;
  mark[1] = true;
  for (int i = 2; i <= 1000; i++) {
    if (!mark[i]) {
      pr.push_back(i);
      for (int j = 2 * i; j <= 1000; j += i) mark[j] = true;
    }
  }
  for (int i = 0; i <= 1000; i++) {
    int m = n - i;
    bool fl = true;
    for (int j = 2; j * j <= m; j++) {
      if (m % j == 0) {
        fl = false;
        break;
      }
    }
    if (!fl) continue;
    if (i == 0) {
      cout << 1 << endl << n << endl;
      return 0;
    }
    for (auto p : pr) {
      if (p > i) break;
      if (p == i) {
        cout << 2 << endl << n - i << ' ' << i << endl;
        return 0;
      }
      if (!mark[i - p]) {
        cout << 3 << endl << n - i << ' ' << i - p << ' ' << p << endl;
        return 0;
      }
    }
  }
  return 0;
}
