#include #include #include #include #include #include #include #include #include #include #include #include #define debug_value(x) cerr << "line" << __LINE__ << ":<" << __func__ << ">:" << #x << "=" << x << endl; #define debug(x) cerr << "line" << __LINE__ << ":<" << __func__ << ">:" << x << endl; template inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } using namespace std; typedef long long ll; template class OffsetVec{ public: int n; vector v; T& operator[](int x) { return v[x+n]; } void print(){ for(int i = -n; i <= n; i++) cout << v[i+n] << ' '; cout << endl; } OffsetVec(int _n){ n = _n; v = vector(2*n+1); } OffsetVec(int _n, T x){ n = _n; v = vector(2*n+1, x); } }; const int N_MAX = 1<<16; const int m = 300; int popcount(int n){ int ans = 0; for(int i = 0; i < 16; i++){ if(n&(1<= 0 && i < 4 && j >= 0 && j < 4; } int main(){ ios::sync_with_stdio(false); cin.tie(0); cout << setprecision(10) << fixed; int k; cin >> k; vector> dp(N_MAX, OffsetVec(m, 0)); dp[0][0] = 1; ll sum = 0; for(int s = 0; s < (1<<16); s++){ int nx = popcount(s)+1; vector> used(4, vector(4)); for(int j = 0; j < 16; j++){ if(s&(1<= -m); assert(k+cnt*nx <= m); dp[s+(1<