#include <bits/stdc++.h>
using namespace std;
int n;
bool check(int num) {
  if (1 == num) return true;
  for (int i = 2; i <= num / i; i++) {
    if (num % i == 0) {
      return false;
    }
  }
  return true;
}
int main() {
  cin >> n;
  if (check(n)) {
    printf("1\n");
    printf("%d\n", n);
  } else if (check(n - 2)) {
    printf("2\n");
    printf("2 %d\n", n - 2);
  } else if (check(n - 4)) {
    printf("3\n");
    printf("2 2 %d\n", n - 4);
  } else {
    bool result = false;
    int i, even;
    int prime1, temp, prime2;
    for (int num = 3; num < n / 3 + 10; num++) {
      if (!check(num)) continue;
      even = n - num;
      for (prime1 = 3; prime1 <= even / 2; prime1 += 2) {
        for (temp = 2; temp <= sqrt(prime1); temp++) {
          if (prime1 % temp == 0) break;
        }
        if (temp > sqrt(prime1))
          prime2 = even - prime1;
        else
          continue;
        for (temp = 2; temp <= sqrt(prime2); temp++) {
          if (prime2 % temp == 0) break;
        }
        if (temp > sqrt(prime2)) {
          cout << 3 << endl << num << " " << prime1 << " " << prime2 << endl;
          result = true;
          break;
        }
      }
      if (!result)
        continue;
      else
        break;
    }
  }
}
