1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include <stdio.h>

#define decl_dir(name, letter) \
void name(long long) { printf(letter); } \
void name() { name(0); }

decl_dir(r, "A")
decl_dir(dr, "B")
decl_dir(dl, "C")
decl_dir(l, "D")
decl_dir(ul, "E")
decl_dir(ur, "F")

#define decl_dir_pair(name1, name2) \
void name1##_##name2(long long n) { name1(); name2(); } \
void name1##_##name2() { name1##_##name2(0); }

decl_dir_pair(dl, ul);
decl_dir_pair(ul, dl);
decl_dir_pair(dr, ur);
decl_dir_pair(ul, r);
decl_dir_pair(r, dl);
decl_dir_pair(l, dr);
decl_dir_pair(r, ul);

void rep(void (*fn)(long long), long long n, long long k)
{
	if (k == 0) return;
	for (int i = 9; i >= 2; i--) {
		if (k % i == 0) {
			printf("%d[", i);
			rep(fn, n, k/i);
			printf("]");
			return;
		}
	}
	fn(n);
	rep(fn, n, k-1);
}

void rep(void (*fn)(long long), long long k)
{
	rep(fn, 0, k);
}

void rhombus1(long long n)
{
	rep(r, n);
	rep(dl_ul, n);
	dl();
}

void rhombus(long long n)
{
	if (n == 0) return;
	rep(rhombus1, n, n);
	rep(r, n);
}

void tri(long long n);

void two_tri(long long n)
{
	printf("2[");
	dl();
	tri(n);
	rep(r_dl, n);
	r();
	printf("]");
}

void tri(long long n)
{
	if (n == 0) return;
	if (n == 1) {
		dl(); r(); ul();
		return;
	}
	if (n == 2) {
		dl(); dl();
		r(); ul(); r(); dl(); r();
		ul(); ul();
		return;
	}

	long long n_odd = (n & 1) ? n : n-1;

	dr();
	two_tri(n_odd/2 - 1);
	rep(ul, n_odd-1);
	rep(l_dr, n_odd/2 + 1);
	rhombus(n_odd/2 - 1);
	r();
	rep(ul_r, n_odd/2 - 1);
	rep(ul_dl, n_odd/2);
	rep(l_dr, n_odd/2 - 1);
	l();
	if (!(n & 1)) {
		rep(dr_ur, n-1);
		dr();
		rep(l, n);
		ur();
	}

	rep(ur, n_odd);
}

int main(void)
{
	long long n;

	scanf("%lld", &n);
	tri(n);
	printf("\n");

	return 0;
}