#include <bits/stdc++.h>
using namespace std;
long long A = 2179, M = 1e18 + 7;
char otherCh(char a, char b) {
  if (a != 'a' && b != 'a') {
    return 'a';
  }
  if (a != 'b' && b != 'b') {
    return 'b';
  }
  return 'c';
}
bool isProst(int n) {
  int sn = sqrt(n + 0.0);
  for (int i = 2; i <= sn; ++i) {
    if (n % i == 0) {
      return false;
    }
  }
  return true;
}
vector<int> ans;
void print_ans() {
  cout << ans.size() << endl;
  for (int i = 0; i < ans.size(); ++i) {
    cout << ans[i] << ' ';
  }
  exit(0);
}
int main() {
  int n;
  cin >> n;
  if (n == 3) {
    cout << 1 << endl << 3;
    return 0;
  }
  if (isProst(n)) {
    cout << 1 << endl << n;
    return 0;
  }
  int m = max(3, n - 30000);
  for (; m <= n; ++m) {
    if (isProst(m)) {
      break;
    }
  }
  ans.resize(1, m);
  n -= m;
  if (isProst(n)) {
    ans.push_back(n);
    print_ans();
  }
  int n2 = n / 2;
  for (int i = 3; i <= n2; i += 2) {
    if (isProst(i) && isProst(n - i)) {
      ans.push_back(i);
      ans.push_back(n - i);
      print_ans();
    }
  }
  return 0;
}
