/*
* Copyright (c) 2025 Emon Thakur
* All rights reserved.
*/
#include<bits/stdc++.h>
using namespace std;
int n;
string s;
void bracket(int i,string &s,int cnt1,int cnt2)
{
if(i==n)
{
cout<<s<<'\n';
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()
{
cin >> n;
bracket(0,s,0,0);
}