#include <bits/stdc++.h>
using namespace std;
long long a[3], n;
bool prime(long long n) {
  for (long long i = 2; i * i <= n; i++)
    if (n % i == 0) return false;
  return true;
}
int gold(unsigned long int n, unsigned long int n1, unsigned long int n2) {
  for (n1 = n / 2; n1 <= n; n1++)
    if (prime(n1)) {
      n2 = n - n1;
      if (prime(n2)) break;
    }
  return n2;
}
int silv(long long n, long long n1, long long n2, long long n3) {
  long long sum = 0;
  for (n3 = n / 2; n3 <= n; n3++)
    if (prime(n3)) {
      sum = n - n3;
      break;
    }
  n1 = gold(sum, n1, n2);
  n2 = n - n1 - n3;
  cout << n1 << " " << n2 << " " << n3;
  return sum;
}
int main() {
  long long t, k1 = 0, k2 = 0, k3 = 0;
  string s1, s2, s;
  cin >> n;
  if (prime(n)) {
    cout << 1 << endl << n;
    return 0;
  }
  if (n % 2 == 0) {
    k1 = n / 2 + 1;
    k2 = n / 2 - 1;
    long long r = gold(n, k1, k2);
    cout << 2 << endl << r << " " << n - r;
  } else {
    cout << 3 << endl;
    silv(n, k1, k2, k3);
  }
}
