#include <bits/stdc++.h>
const long long MOD = 1e9 + 7;
using namespace std;
bool isprime(int n) {
  if (n % 2 == 0) return 0;
  for (int i = 3; i <= sqrt(n); i += 2)
    if (n % i == 0) return 0;
  return 1;
}
int i, n, x, w,
    p[64] = {2,   3,   5,   7,   11,  13,  17,  19,  23,  29,  31,  37,  41,
             43,  47,  53,  59,  61,  67,  71,  73,  79,  83,  89,  97,  101,
             103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167,
             173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239,
             241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307};
bool a[320];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (i = 0; i < 64; i++) a[p[i]] = 1;
  if (n < 300)
    w = 0;
  else
    w = n - 300;
  for (i = n; i > w; i -= 2)
    if (isprime(i)) {
      if (i == n)
        cout << 1 << endl << n;
      else if (i + 2 == n)
        cout << 2 << endl << 2 << " " << n - 2;
      else {
        cout << 3 << endl << i << " ";
        x = n - i;
        for (int k = 0; k < 64; k++)
          if (a[x - p[k]]) {
            cout << p[k] << " " << x - p[k];
            return 0;
          }
      }
      return 0;
    }
  return 0;
}
