#include <iostream>
#include<vector>
using namespace std;
vector<int>res;
vector<vector<int>>board(8,vector<int>(8,0));   //棋盘

bool judge(int x,int y){    //能否放置
    for(int i=0;i<x;i++){      
        if(board[i][y]) return false;   //判断列(行无须判断)
        int j=i+y-x;
        if(j>=0 && board[i][j]) return false;     //判断两对角
        j=x+y-i;
        if(j<8 && board[i][j]) return false;
    }
    return true;
}

void dfs(int x,int y,int cur){      //x,y为当前尝试放置的坐标
    if(judge(x,y)){        //可放置
        if(x==7) {
            res.push_back(cur*10+(y+1));     //已经是最后一行,直接添加结果并返回
            return;
        }
        else{                           //不是最后一行
            board[x][y]=1;              //放置当前坐标下
            dfs(x+1,0,cur*10+(y+1));    //尝试放在下一行第一个
            board[x][y]=0;      //回溯,该格设为不放置
        }
    }
    if(y!=7)  dfs(x,y+1,cur);  //无论当前该格可不可以放置,都尝试放在下一格
}

int main() {
    dfs(0,0,0);
    int n;
    while(cin>>n){
        cout<<res[n-1]<<endl;
    }
}