#include using namespace std; const int MAX_N = 14; bool viz[6 * MAX_N][6 * MAX_N]; const int dx[] = {0, 1, 0, -1}; const int dy[] = {1, 0, -1, 0}; typedef pair pii; vector now; set< vector > forms; void doThang() { pii best = now.front(); for(auto j: now) { if(j > best) best = j; } vector add(now); for(auto &i: add) { i.first -= best.first; i.second -= best.second; } sort(add.begin(), add.end()); forms.insert(add); } void back(int x, int y, int len) { viz[x][y] = 1; now.push_back(make_pair(x, y)); if(!len) { //we have finished the thing doThang(); } else { for(int d = 0; d < 4; ++d) { int nx = x + dx[d]; int ny = y + dy[d]; if(!viz[nx][ny]) { back(nx, ny, len - 1); } } } now.pop_back(); viz[x][y] = 0; } int ans[20]; int main() { int n; cin >> n; back(20, 20, n - 1); cout << forms.size() << "\n"; return 0; }