#include <bits/stdc++.h>
using namespace std;
const long long N = 3e2 + 10;
vector<long long> vec[N];
long long n;
bool prime(long long n) {
  for (long long i = 2; i * i <= n; i++)
    if (n % i == 0) return false;
  return n != 1;
}
int32_t main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  for (long long i = 2; i < N; i += 2)
    for (long long j = 2; j <= i; j++)
      if (prime(j) && prime(i - j)) {
        vec[i].push_back(j);
        if (i != j) vec[i].push_back(i - j);
        break;
      }
  cin >> n;
  for (long long i = n;; i--)
    if (prime(i)) {
      n -= i;
      cout << 1 + vec[n].size() << '\n' << i << " ";
      for (auto x : vec[n]) cout << x << " ";
      return 0;
    }
}
