#include <iostream> #include <string> #include <map> using namespace std; int res[20]; int lie[20]; int zheng[30]; int ni[30]; int AllRes[] = {15863724,16837425,17468253,17582463,24683175,25713864,25741863,26174835,26831475,27368514,27581463,28613574,31758246, 35281746,35286471,35714286,35841726,36258174,36271485,36275184,36418572,36428571,36814752,36815724,36824175,37285146, 37286415,38471625,41582736,41586372,42586137,42736815,42736851,42751863,42857136,42861357,46152837,46827135,46831752, 47185263,47382516,47526138,47531682,48136275,48157263,48531726,51468273,51842736,51863724,52468317,52473861,52617483, 52814736,53168247,53172864,53847162,57138642,57142863,57248136,57263148,57263184,57413862,58413627,58417263,61528374, 62713584,62714853,63175824,63184275,63185247,63571428,63581427,63724815,63728514,63741825,64158273,64285713,64713528, 64718253,68241753,71386425,72418536,72631485,73168524,73825164,74258136,74286135,75316824,82417536,82531746,83162574,84136275}; /* void dfs(int step){ if(到达目的地){ 输出解 返回 } 剪枝(可选) for(int i=0;i<枚举数;i++){ if(满足条件){ 更新状态 dfs(step+1) 恢复状态 } } } */ void dfs(int step, int n){ // if (step == n){ // for (int i = 0; i < n; ++i) { // cout<<res[i]+1; // } // cout<<endl; // } for (int j = 0; j < n; ++j) { if (!(lie[j] || ni[j+step] || zheng[j-step+n])){ res[step] = j; lie[j] = 1; zheng[j-step+n] = 1; ni[j+step] = 1; dfs(step+1,n); lie[j] = 0; zheng[j-step+n] = 0; ni[j+step] = 0; } } } int main(){ int x; dfs(0,8); while (cin>>x){ cout<<AllRes[x-1]<<endl; } return 0; }