/*
* Copyright (c) 2025 Emon Thakur
* All rights reserved.
*/
#include<bits/stdc++.h>
using namespace std;
int n;
vector<string> v;
string s;
long long cnt = 0;
#define fr freopen("input16.txt","r",stdin);
//ofstream file("output16.txt");
void bracket(int i,string &s,int cnt1,int cnt2)
{
if(i==n)
{
//++cnt;
cout<<s<<'\n';
//v.push_back(s);
return;
}
int rem = n-i-1;
if(cnt1+cnt2+1 <= rem)
{
s.push_back('(');
bracket(i+1,s,cnt1,cnt2+1);
s.pop_back();
}
if(cnt2)
{
s.push_back(')');
bracket(i+1,s,cnt1,cnt2-1);
s.pop_back();
}
if(cnt1+cnt2+1 <= rem)
{
s.push_back('[');
bracket(i+1,s,cnt1+1,cnt2);
s.pop_back();
}
if(cnt1)
{
s.push_back(']');
bracket(i+1,s,cnt1-1,cnt2);
s.pop_back();
}
}
int main()
{
//fr
//ios::sync_with_stdio(false); cin.tie(nullptr);
cin >> n;
bracket(0,s,0,0);
//cout<<cnt<<'\n';
//sort(v.begin(),v.end());
//for(auto e:v) cout<<e<<'\n';
}