#include <bits/stdc++.h>
using namespace std;
#define int long long
bool isprime(int n)
{
if(n<=1)
return 0;
if(n==2)
return 1;
if(n%2==0)
return 0;
for(int i=3;i*i<=n;i+=2)
if(n%i==0)
return 0;
return 1;
}
signed main()
{
int n;
cin>>n;
if(isprime(n))
cout<<"1\n"<<n;
else if(isprime(n-2))
cout<<"2\n2 "<<n-2;
else
{
cout<<"3\n";
cout<<3<<' ';
n-=3;
for(int i=3;i<n;i++)
{
bool b=0;
for(int ii=3;ii<n;ii++)
{
if(isprime(i)&&isprime(ii)&&ii+i==n)
{
cout<<i<<' '<<ii;
b=1;
break;
}
}
if(b)
break;
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwpib29sIGlzcHJpbWUoaW50IG4pCnsKICAgIGlmKG48PTEpCiAgICAgICAgcmV0dXJuIDA7CiAgICBpZihuPT0yKQogICAgICAgIHJldHVybiAxOwogICAgaWYobiUyPT0wKQogICAgICAgIHJldHVybiAwOwogICAgZm9yKGludCBpPTM7aSppPD1uO2krPTIpCiAgICAgICAgaWYobiVpPT0wKQogICAgICAgICAgICByZXR1cm4gMDsKICAgIHJldHVybiAxOwp9CnNpZ25lZCBtYWluKCkKewogICAgaW50IG47CiAgICBjaW4+Pm47CiAgICBpZihpc3ByaW1lKG4pKQogICAgICAgIGNvdXQ8PCIxXG4iPDxuOwogICAgZWxzZSBpZihpc3ByaW1lKG4tMikpCiAgICAgICAgY291dDw8IjJcbjIgIjw8bi0yOwogICAgZWxzZQogICAgewogICAgICAgIGNvdXQ8PCIzXG4iOwogICAgICAgIGNvdXQ8PDM8PCcgJzsKICAgICAgICBuLT0zOwogICAgICAgIGZvcihpbnQgaT0zO2k8bjtpKyspCiAgICAgICAgewogICAgICAgICAgICBib29sIGI9MDsKICAgICAgICAgICAgZm9yKGludCBpaT0zO2lpPG47aWkrKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoaXNwcmltZShpKSYmaXNwcmltZShpaSkmJmlpK2k9PW4pCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY291dDw8aTw8JyAnPDxpaTsKICAgICAgICAgICAgICAgICAgICBiPTE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoYikKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KfQ==