/*
ID :
LANG: C++11
TASK: subset
*/
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
int N;
int main(){
freopen("subset.in","r",stdin);
freopen("subset.out","w",stdout);
cin >> N;
int equalValue = N * (N + 1) / 4;
int a[42][400];
memset(a, 0, sizeof(a));
a[1][1] = 1;
for(int i = 2; i < 40; i ++){
for(int j = 1; j <= N * (N + 1) / 4; j ++){
a[i][j] = a[i - 1][j] + (j - i > 0 ? a[i - 1][j - i] : 0);
}
}
if (N * (N + 1) % 4 == 0)
cout << a[N][equalValue] << endl;
else
cout << 0 << endl;
return 0;
}
可以降维。