#include <bits/stdc++.h>
using namespace std;
const long long N = 1e6 + 9;
const long long mod = 1000000007;
long long pr[N];
bool vis[N];
int cnt;
void getpr() {
  for (int i = 2; i < N; i++) {
    if (!vis[i]) pr[++cnt] = i;
    for (int j = 1; j <= cnt && pr[j] * i < N; j++) {
      vis[i * pr[j]] = 1;
      if (i % pr[j] == 0) break;
    }
  }
}
bool ispr(long long n) {
  for (long long i = 2; i * i <= n; i++) {
    if (n % i == 0) return 0;
  }
  return 1;
}
void solve() {
  getpr();
  long long n = 2;
  cin >> n;
  if (ispr(n)) {
    cout << 1 << "\n" << n << endl;
    return;
  }
  if (n % 2 != 0) {
    cout << 3 << endl;
    cout << 3 << " ";
    n -= 3;
  } else {
    cout << 2 << endl;
  }
  for (int i = 1; i <= cnt; i++) {
    long long d = n - pr[i];
    if (ispr(d)) {
      cout << d << " " << pr[i] << endl;
      return;
    }
  }
  getchar();
  return;
}
signed main() {
  ios::sync_with_stdio(0);
  long long t = 1;
  while (t--) solve();
  return 0;
}
