// #include <cstdio>
// #include <vector>
// #include <bitset>
// #include <iostream>
// #include <stack>
// #include "library.h"
// using namespace std;
// #define f first
// #define s second
// int const N = 1010;
// void Solve(int n){
// vector<pair<pair<int,int>,bitset<N>>> com;
// vector<vector<int>> connect(n);
// vector<int> M(n,0);
// int last = 0;
// for(int i{}; i < n; i++) {
// M[i] = 1;
// int ret = Query(M);
// // for(auto [n,k]:com){
// // cout << k << " " << n.f << "-" << n.s << endl;
// // }
// // cout << ret << " " << last << endl;
// // cout << "_________" << endl;
// if(ret > last){
// bitset<N> temp;
// temp[i] = 1;
// com.emplace_back(make_pair(i,i),temp);
// }
// else if(ret == last){
// int l = 0;
// int r = com.size()-1;
// while(l <= r){
// int md = l+(r-l)/2;
// bitset<N> bs(0);
// for(int i{l};i <= md;i++){
// bs |= com[i].s;
// }
// vector<int> temp(n,0);
// for(int j{};j < n;j++){
// if(bs[j]) temp[j] = 1;
// }
// temp[i] = 1;
// int Bret = Query(temp);
// if(Bret == (md-l+1)){
// if(md == l){
// com[md].s[i] = 1;
// vector<int> tempt(n,0);
// tempt[com[md].f.f] = 1;
// tempt[i] = 1;
// if(Query(tempt) == 1){
// connect[com[md].f.f].emplace_back(i);
// connect[i].emplace_back(com[md].f.f);
// com[md].f.f = i;
// }
// else{
// connect[com[md].f.s].emplace_back(i);
// connect[i].emplace_back(com[md].f.s);
// com[md].f.s = i;
// }
// //cout << md << " " << i << endl;
// break;
// }
// r = md-1;
// }
// else l = md+1;
// }
// }
// else if(ret < last){
// int find1 = -1;
// int find2 = -1;
// int l = 0;
// int r = com.size()-1;
// while(l <= r){
// int md = l+(r-l)/2;
// bitset<N> bs(0);
// for(int j{l};j <= md;j++){
// bs |= com[j].s;
// }
// vector<int> temp(n, 0);
// for(int j{};j < n;j++){
// if(bs[j]) temp[j] = 1;
// }
// temp[i] = 1;
// int Bret = Query(temp);
// if(Bret <= (md-l+1)){
// if(md == l){
// vector<int> tempt(n, 0);
// tempt[com[md].f.f] = 1; tempt[i] = 1;
// if(Query(tempt) == 1){
// connect[com[md].f.f].push_back(i);
// connect[i].push_back(com[md].f.f);
// }
// else{
// connect[com[md].f.s].push_back(i);
// connect[i].push_back(com[md].f.s);
// }
// find1 = md;
// //cout << md << " " << i << endl;
// break;
// }
// r = md-1;
// } else l = md+1;
// }
// l = 0;
// r = com.size()-1;
// while(l <= r){
// int md = l+(r-l)/2;
// bitset<N> bs(0); int cnt = 0;
// for(int j{l};j <= md;j++){
// if(j != find1){
// bs |= com[j].s;
// cnt++;
// }
// }
// if(cnt == 0){
// l = md+1;
// continue;
// }
// vector<int> temp(n, 0);
// for(int j{};j < n;j++){
// if(bs[j]) temp[j] = 1;
// }
// temp[i] = 1;
// if(Query(temp) <= cnt){
// if(md == l){
// vector<int> tempt(n, 0);
// tempt[com[md].f.f] = 1; tempt[i] = 1;
// if(Query(tempt) == 1) {
// connect[com[md].f.f].push_back(i);
// connect[i].push_back(com[md].f.f);
// } else {
// connect[com[md].f.s].push_back(i);
// connect[i].push_back(com[md].f.s);
// }
// find2 = md; break;
// }
// r = md-1;
// } else l = md+1;
// }
// int f1 = find1;
// int f2 = find2;
// if(f1 > f2) swap(f1, f2);
// int L = (connect[com[f1].f.f].size() <= 1) ? com[f1].f.f : com[f1].f.s;
// int R = (connect[com[f2].f.f].size() <= 1) ? com[f2].f.f : com[f2].f.s;
// com[f1].s |= com[f2].s;
// com[f1].s[i] = 1;
// com[f1].f.f = L;
// com[f1].f.s = R;
// com.erase(com.begin() + f2);
// }
// last = ret;
// }
// int beg = n;
// for(int i{};i < n;i++){
// if(connect[i].size() <= 1){
// beg = i;
// break;
// }
// }
// // for(auto [n,k]:com) cout << k << endl;
// // //cout << ret << " " << last << endl;
// // cout << "_________" << endl;
// stack<int> st;
// st.emplace(beg);
// vector<int> ans;
// vector<bool> in(n);
// while(!st.empty()){
// int pos = st.top();st.pop();
// if(in[pos]) continue;
// in[pos] = true;
// ans.emplace_back(pos+1);
// for(auto k:connect[pos]){
// st.emplace(k);
// }
// }
// // for(int i{};i < n;i++){
// // cout << i << " : ";
// // for(auto k:connect[i]) cout << k << " ";
// // cout << endl;
// // }
// // for(auto k:ans) cout << k << " ";
// Answer(ans);
// }
#include <cstdio>
#include <vector>
#include <bitset>
#include <iostream>
#include <stack>
#include "library.h"
using namespace std;
#define f first
#define s second
int const N = 210;
vector<int> adj[N];
void Solve(int n){
for(int i{};i < n;i++){
for(int j{};j < i;j++){
vector<int> temp(n,0);
temp[i] = 1;
temp[j] = 1;
if(Query(temp) == 1){
adj[i].emplace_back(j);
adj[j].emplace_back(i);
}
}
}
vector<int> ans;
stack<int> q;
vector<bool> vis(n,0);
int beg = 0;
for(int i{};i < n;i++){
if(adj[i].size() <= 1) beg = i;
}
q.emplace(beg);
while(!q.empty()){
int hd = q.top();q.pop();
if(vis[hd]) continue;
vis[hd] = 1;
ans.emplace_back(hd+1);
for(auto k:adj[hd]){
q.emplace(k);
}
}
//for(auto k:ans) cout << k << " ";
Answer(ans);
}