#include <bits/stdc++.h>
using namespace std;
bool table[300];
void build() {
  table[0] = false;
  table[1] = false;
  for (int i = 2; i < 300; i++) table[i] = true;
  for (int i = 2; i * i < 300; i++) {
    if (table[i]) {
      for (int j = i * 2; j < 300; j += i) table[j] = false;
    }
  }
}
bool isprime(long long int num) {
  bool flag = false;
  for (int i = 2; i <= (int)sqrt(num); i++) {
    if (num % i == 0) {
      flag = true;
      break;
    }
  }
  return (flag) ? false : true;
}
void dima(long long int num) {
  long long int num2 = num - 1;
  int k = 0;
  vector<long long int> nums;
  if (isprime(num)) {
    nums.push_back(num);
  } else {
    while (num2 > 0) {
      if (num2 % 2 == 0 && table[num - num2]) {
        nums.push_back(num - num2);
        break;
      }
      num2--;
    }
    long long int a = 2;
    num2 -= 2;
    while (true) {
      if (isprime(a) && isprime(num2)) {
        nums.push_back(num2);
        nums.push_back(a);
        break;
      }
      a++;
      num2--;
    }
  }
  cout << nums.size() << endl;
  for (int i = 0; i < nums.size(); i++) cout << nums[i] << " ";
  cout << endl;
}
int main() {
  build();
  int a;
  cin >> a;
  dima(a);
}
