#include <bits/stdc++.h>
using namespace std;
long long EPS = 1000000007;
double PI = 3.14159265358979323846;
const int MAXN = 100010;
long long abss(long long h) { return max(h, -h); }
double fabss(double h) { return max(h, -h); }
long long ceill(long long x, long long y) {
  if (x % y != 0) {
    return (x / y) + 1;
  }
  return x / y;
}
string itos(long long num) {
  string str = "";
  if (num == 0) {
    return "0";
  }
  while (num != 0) {
    str += ((num % 10) + '0');
    num /= 10;
  }
  reverse(str.begin(), str.end());
  return str;
}
int n, m, k;
int a[MAXN];
int b[MAXN];
int c[MAXN];
int check(int k) {
  if (k == 1) {
    return 0;
  }
  for (int i = 2; i * i <= k; i++) {
    if (k % i == 0) {
      return 0;
    }
  }
  return 1;
}
int main() {
  cin >> n;
  if (check(n) == 1) {
    cout << 1 << endl << n;
    return 0;
  }
  int count = n;
  while (true) {
    count -= 2;
    if (check(count) == 0) {
      continue;
    }
    if (check(count) == 1 && check(n - count) == 1) {
      cout << 2 << endl << count << " " << n - count;
      return 0;
    }
    int c = n - count;
    while (c > 0) {
      if (check(n - count - c) == 1 && check(count) == 1 && check(c) == 1) {
        cout << 3 << endl << n - count - c << " " << count << " " << c;
        return 0;
      }
      c--;
    }
  }
}
