//对于一个正整数n的划分,就是把n变成一系列正整数之和的表达式。注意,分划与顺序无关,例如6=5+1跟6=1+5是
//同一种分划。另外,单独这个整数本身也算一种分划。
//例如:对于正整数n=5,可以划分为:
//1+1+1+1+1
//1+1+1+2
//1+1+3
//1+2+2
//2+3
//1+4
//5
#include <iostream>
using namespace std;
int huafen(int n, int m){
if(n == 1 || m == 1)
return 1;
else if(n > m)
return huafen(n, m - 1) + huafen(n - m, m); //划分中包含m的情况,即{m, {x1,x2,...xi}}, 其中{x1,x2,... xi} 的和为n-m,因此这情况下为f(n-m,m)
else if(n < m)
return huafen(n, n);
else if(n == m){
return 1 + huafen(n, m - 1);
}
}
//http://blog.csdn.net/u013197555/article/details/48436947
int main(){
int n;
cin >> n;
cout << huafen(n, n);
return 0;
}