Link to this code: https://cses.fi/paste/e5296b99d38c3132d8d961/
/* 777 */

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

const int MOD = 1e9 + 7;
int N, dp[2][260000];

void solve() {
    cin >> N;
    int OFFSET = N * (N + 1) / 2;

    // odd sum not possible
    if (OFFSET & 1) {
        cout << 0;
        return;
    }

    dp[(N + 1) & 1][OFFSET] = 1;
    for (int i = N; i > 0; --i) {
        for (int s = 0; s <= 2 * OFFSET - i; ++s) {
            dp[i & 1][s] = dp[(i + 1) & 1][s + i];
        }
        for (int s = i; s <= 2 * OFFSET; ++s) {
            dp[i & 1][s] += dp[(i + 1) & 1][s - i];
            dp[i & 1][s] %= MOD;
        }
    }
    cout << (dp[1][OFFSET] * ((MOD + 1) / 2)) % MOD;
}

int32_t main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    solve();
}