#include <iostream>
#include <cstring>
using namespace std;
const int N = 20;
int n, idx = 1, ans[100];
string ts;
bool col[N], dg[N], udg[N]; //列,正对角线,副对角线
void dfs(int n){//n行
if(n == 8){
ans[idx++] = stoi(ts);
return;
}
for(int i=0; i<8; i++){//i列
if(!col[i] && !dg[i+n] && !udg[8-n+i]){
ts.push_back(i + 1 + '0');
col[i] = dg[n + i] = udg[8 - n + i] = true;
dfs(n+1);
col[i] = dg[n + i] = udg[8 - n + i] = false;
ts.pop_back();
}
}
}
int main(){
dfs(0);
cin>>n;
while(n--){
int b;
cin>>b;
cout<<ans[b]<<endl;
}
return 0;
}