#include #include #include #define NMAX 14 using namespace std; int sol[14]; int n; set < long long int> s; int aj[14]; int dx[5] = { 0,-1,0,1,0 }; int dy[5] = { 0,0,1,0,-1 }; bool uz[40][40]; void bkt(int k,int x ,int y); int total; int main() { cin >> n; n--; uz[15][15] = 1; bkt(1,15,15); cout << total << '\n'; return 0; } void bkt(int k, int x, int y) { if (k == n + 1) { //check long long int numar = 0;; long long int echivalent = 0; for (int i = 1; i <= n; i++) { numar += sol[i]; numar *= 10; if (sol[i]==3 || sol[i]== 1 ) aj[n - i + 1] = 4 - sol[i]; if (sol[i] == 2 || sol[i] == 4) aj[n - i + 1] = 6 - sol[i]; } for (int i = 1; i <= n; i++) { echivalent += aj[i]; echivalent *= 10; } if (s.find(numar) == s.end() && s.find(echivalent) == s.end()) { total++; s.insert(numar); /*for (int i = 1; i <= n; i++) { cout << sol[i] << ' '; } cout << '\n';*/ } return; } for (int i = 1; i <= 4; i++) { sol[k] = i; if (uz[x + dx[i]][y + dy[i]] == 0) { uz[x + dx[i]][y + dy[i]] = 1; bkt(k + 1, x + dx[i], y + dy[i]); uz[x + dx[i]][y + dy[i]] = 0; } } }