#include #include #include #include using namespace std; #define rep(i,a,b) for(auto i=a; i<(b); ++i) typedef vector vi; vector gen(int n) { if (n == 1) return vector (1, vi(1, 1)); vector next = gen(n - 1); vector res; bool dir = false; for (vi &o : next) { if (!dir) o.push_back(n); else o.insert(o.begin(), n); res.push_back(o); int cur = dir ? 0 : n - 1; rep(i,0,n-1) { int pos = cur + (dir ? 1 : -1); swap(o[cur], o[pos]); cur = pos; res.push_back(o); } dir = !dir; } return res; } int main() { int n; scanf("%d", &n); vector res = gen(n); for (vi &o : res) { reverse(o.begin(), o.end()); for (int x : o) cout << x << " "; cout << endl; } }