#include #include #include #include #include #include #include #include #include #include #include #include #include #include typedef long long ll; using namespace std; #define debug(x) cerr << #x << " = " << (x) << endl; #define mod 1000000007 //1e9+7(prime number) #define INF 1000000000 //1e9 #define LLINF 2000000000000000000LL //2e18 #define SIZE 30 int dp[1<<24]; int visited[1<<24]; int last[1<<24]; int n; int f[SIZE][SIZE]; vector vec; vector vec2[24]; void dfs(int h, int key, int last_){ last[key] = max(last[key],last_); if(visited[key]) return; visited[key] = true; vec2[h].push_back(key); if(h >= n-n/4*2){ vec.push_back(key); return; } for(int j=last_;j