#include<iostream>
#include<cmath>
using namespace std;
int num[50];
int n;
int index=0;
int maxtotal=-1;
//判断素数
bool sushu(int m)
{
bool r = true;
for (int i=2;i<=sqrt(m);i++)
{
if (m % i == 0){
r = false;
break;
}
}
if(m <= 1){
r = false;
}
return r;
}
//k为当前下标,sum为总和,total为使用的数字的个数
void fun(int k,int sum,int total)
{
if (sum==n)
{
if (total>maxtotal)//更新total
{
maxtotal=total;
}
return;
}
if (sum>n||k>=index)//如果sum超过n,或者下标大于素数个数结束
{
return;
}
fun(k+1,sum+num[k],total+1);
fun(k+1,sum,total);
}
int main()
{
cin>>n;
for (int i=2;i<=n;i++)
{
if (sushu(i))//如果是素数,将其存进num数组
{
num[index++]=i;
}
}
fun(0,0,0);
cout<<maxtotal;
return 0;
}
/**************************************************************
Problem: 1379
User: admin
Language: C++
Result: Accepted
Time:92 ms
Memory:2072 kb
****************************************************************/