#include<iostream>
#include<string.h>
#include<queue>
#include<string>
#include<vector>
using namespace std;
int total,num,cnt;
int a[3]={1,2,3};
vector<int> ans;
int e=0;
void dfs(int d)
{
e++;
if(num==total)
{
cnt++;
return ;
}
else if(total>num) //简单剪枝
return ;
else
{
for(int i=d;i<3;i++) //枚举每一个
{
total+=a[i]; //价值的相加
ans.push_back(a[i]);
dfs(i);
ans.pop_back();
total-=a[i];
}
}
}
int main()
{
cin>>num;
total=cnt=0;
dfs(0);
cout<<"1 2 3价值 组成"<<num<<"的情况"<<endl;
cout<<"一共的组合数: "<<cnt<<endl;
cout<<"总运行次数: "<<e<<endl;
return 0;
}