#include <bits/stdc++.h>
using namespace std;

/*
  将要凑出的数看成背包的容量
  所有可以用的物品是1~n n个物品
  每个物品的体积是 1~n
  问题转换为:给定1~n,n个物品,背包容量为n,求装满背包的方案数
  由于每个数可以选多次,该问题就是完全背包的问题
  
  DP分析法:
  (1)状态表示:f[i,j] 
        集合:所有从前i个物品选,且总体积恰好是j的所有选择方案的集合
	    属性:集合中元素的数量 
  (2)状态计算: 
      所有不包含第i个物品的方案:f[i-1,j]
	  所有包含第i个物品的方案:f[i-1,j-k*vi]:可以考虑为第i个物品一定有,那么就转换为在i-1个物品的情况下,凑出背包容量为j-k*vi的方案数
	  因此:f[i,j] = f[i-1,j] + f[i-1,j-k*vi]
	 可以用滚动数组优化: 
*/



long long base=2147483648LL;//默认数字为int类型,因此数字后要加LL
int n;
long long f[4005];

int main(){
	cin>>n;
	f[0]=1;
    for(int i=1;i<n;i++)
        for(int j=i;j<=n;j++)
            f[j]=(f[j]+f[j-i])%base;
    cout<<f[n];
}

/**************************************************************
	Problem: 1903
	User: admin
	Language: C++
	Result: Accepted
	Time:156 ms
	Memory:2104 kb
****************************************************************/