#include using namespace std; #define REP(i,n) for(int i=0; i<(int)(n); i++) int black(int x, int y) { return __builtin_popcountll(x & y); } int white(int x, int y, int n) { x = ~x; y = ~y; int mask = (1< &masks, int pos, int n) { if (pos == masks.size()) { for (int i = 0; i < masks.size(); i++) { for (int j = 0; j < i; j++) { if (black(masks[i], masks[j]) >= 2 || white(masks[i], masks[j], n) >= 2) return false; } } return true; } for (int i = 0; i < 1<> n; /* // 実験コード for (int i = 1; i < 8; i++) { cout << i << " "; vector masks(i); if (go(masks, 0, n)) cout << "ok" << endl; else cout << "ng" << endl; } */ if (n <= 2) cout << "INF" << endl; else if (n <= 4) cout << 6 << endl; else if (n <= 6) cout << 4 << endl; else cout << 2 << endl; return 0; }