您的位置:首页 > 编程语言 > Go语言

【codeforces 749A】Bachgold Problem

2017-07-09 15:04 489 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: