Bachgold problem is very easy to formulate. Given a positive integer n represent it as a sum of maximum possible number of prime numbers. One can prove that such representation exists for any integer greater than 1.
Recall that integer k is called prime if it is greater than 1 and has exactly two positive integer divisors — 1 and k.
Input
The only line of the input contains a single integer n (2 ≤ n ≤ 100 000).
Output
The first line of the output contains a single integer k — maximum possible number of primes in representation.
The second line should contain k primes with their sum equal to n. You can print them in any order. If there are several optimal solution, print any of them.
Example
Input
5
Output
2
2 3
Input
6
Output
3
2 2 2
一道简单的贪心,只需要输出2或3
AC代码:
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int n;
int main()
{
int k;
while(cin>>n)
{
k = n / 2;
n = n - (k * 2);
if(n == 1)
{
k--;
cout<<k + 1<<endl;
for(int i = 0; i < k; i++)
cout<<2<<" ";
cout<<3<<endl;
}
else
{
cout<<k<<endl;
for(int i = 0; i < k - 1; i++)
cout<<2<<" ";
cout<<2<<endl;
}
}
return 0;
}