#include <bits/stdc++.h>
using namespace std;
vector<string> res;
//判断一下如果皇后放在坐标(x,y)会不会与现有皇后有冲突
bool noattack(int x, int y, int chess[][9]) {
bool flag = 1; //默认不冲突
//判断横
for (int i = 1; i < 9; i++) {
if (i != y && chess[x][i] == 1) {
flag = 0;
break;
}
}
//判断竖
for (int i = 1; i < 9; i++) {
if (i != x && chess[i][y] == 1) {
flag = 0;
break;
}
}
//处理对角线
int y1 = y - 1;
int y2 = y + 1;
for (int i = x - 1; i > 0; i--) {
//判断左上方对角线有无冲突
if (y1 > 0 && chess[i][y1] == 1) {
flag = 0;
break;
}
//判断右上方对角线有无冲突
if (y2 < 9 && chess[i][y2] == 1) {
flag = 0;
break;
}
y1--;
y2++;
}
return flag;
}
void eight_queen(int index, string temp, int chess[][9]) {
if (index == 9) {//index是纵坐标,默认1,2.....8增长,等到了9就应该收集结果
res.push_back(temp);//收集结果
return;
}
for (int i = 1; i < 9; i++) {
//没有冲突的话(index,i)这个位置就可以放置
if (noattack(index, i, chess)) {
chess[index][i] = 1;//将这个位置进行标记
temp += char(i + '0');//加入结果串
eight_queen(index + 1, temp, chess);
temp.pop_back();//回溯
chess[index][i] = 0;//回溯
}
}
}
int main() {
int k;
while (cin >> k) {
res.clear();
string t = "";
//初始化棋盘
int chess[9][9];
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
chess[i][j] = 0;
}
}
//纵坐标从1开始按顺序放入
eight_queen(1, t, chess);
//字典序排序
sort(res.begin(), res.end());
cout << res[k - 1] << endl;
}
}
// 64 位输出请用 printf("%lld")