#include #include #include #include #include #include #include #include using namespace std; #define FOR(i, a, b) for (int i = (a); i < (b); ++i) #define REP(i, n) FOR(i, 0, n) #define TRACE(x) cout << #x << " = " << x << endl #define _ << " _ " << typedef long long llint; const int MAXN = 20; int na, nb; int wa[MAXN], wb[MAXN]; char grid[MAXN][MAXN]; int mask_right[MAXN]; int mask_left[MAXN]; vector solve() { static int can[1< ans; can[0] = true; REP(state, 1< L = solve(); REP(i, MAXN) REP(j, i) swap(grid[i][j], grid[j][i]); REP(i, MAXN) swap(wa[i], wb[i]); REP(i, MAXN) swap(mask_right[i], mask_left[i]); swap(na, nb); vector R = solve(); int t; scanf("%d", &t); llint ans = 0; for (int a : L) { ans += R.end() - lower_bound(R.begin(), R.end(), t-a); } printf("%lld\n", ans); return 0; }