#ifndef rtgsp
#include "scales.h"
#endif // rtgsp
#include<bits/stdc++.h>
using namespace std;
#ifdef rtgsp
#define _MAXN 6
#define _MAX_ANSWER_CALLS 1
static int _realC[_MAXN];
static int _ind[_MAXN];
static int _numQueries;
static int _numAnswerCalls;
void initialize(int t);
void weigh();
static int _getNumberOfTests() {
int T, ret;
std::cin >> T;
return T;
}
static void _initNewTest() {
int i, ret;
for (i = 0; i < _MAXN; i++) {
// ret = fscanf(_f, "%d", &_realC[i]);
// assert(ret == 1);
std::cin >> _realC[i];
_realC[i]--;
_ind[_realC[i]] = i;
}
_numQueries = 0;
_numAnswerCalls = 0;
}
void answer(int W[]) {
int i;
_numAnswerCalls++;
if (_numAnswerCalls > _MAX_ANSWER_CALLS)
return;
for (i = 0; i < 6; i++)
// fprintf(_of, "%d ", W[i]);
std::cout << W[i] << " ";
// fprintf(_of, "\n%d\n", _numQueries);
std::cout << "\n";
}
static void _checkQuery(int A, int B, int C, int D) {
if (D == -1) {
if (A < 1 || A > 6 || B < 1 || B > 6 || C < 1 || C > 6)
assert(0);
if (A == B || B == C || A == C)
assert(0);
}
else {
if (A < 1 || A > 6 || B < 1 || B > 6 || C < 1 || C > 6 || D < 1 || D > 6)
assert(0);
if (A == B || A == C || A == D || B == C || B == D || C == D)
assert(0);
}
}
int getMedian(int A, int B, int C) {
_numQueries++;
_checkQuery(A, B, C, -1);
A--; B--; C--;
if (_ind[B] < _ind[A] && _ind[A] < _ind[C])
return A + 1;
if (_ind[C] < _ind[A] && _ind[A] < _ind[B])
return A + 1;
if (_ind[A] < _ind[B] && _ind[B] < _ind[C])
return B + 1;
if (_ind[C] < _ind[B] && _ind[B] < _ind[A])
return B + 1;
return C + 1;
}
int getHeaviest(int A, int B, int C) {
_numQueries++;
_checkQuery(A, B, C, -1);
A--; B--; C--;
if (_ind[A] > _ind[B] && _ind[A] > _ind[C])
return A + 1;
if (_ind[B] > _ind[A] && _ind[B] > _ind[C])
return B + 1;
return C + 1;
}
int getLightest(int A, int B, int C) {
_numQueries++;
_checkQuery(A, B, C, -1);
A--; B--; C--;
if (_ind[A] < _ind[B] && _ind[A] < _ind[C])
return A + 1;
if (_ind[B] < _ind[A] && _ind[B] < _ind[C])
return B + 1;
return C + 1;
}
int getNextLightest(int A, int B, int C, int D) {
int allLess = 1;
_numQueries++;
_checkQuery(A, B, C, D);
A--; B--; C--; D--;
if (_ind[A] > _ind[D] || _ind[B] > _ind[D] || _ind[C] > _ind[D])
allLess = 0;
if (allLess == 1) {
if (_ind[A] < _ind[B] && _ind[A] < _ind[C])
return A + 1;
if (_ind[B] < _ind[A] && _ind[B] < _ind[C])
return B + 1;
return C + 1;
}
if (_ind[A] > _ind[D]) {
if ((_ind[A] < _ind[B] || _ind[B] < _ind[D]) && (_ind[A] < _ind[C] || _ind[C] < _ind[D]))
return A + 1;
}
if (_ind[B] > _ind[D]) {
if ((_ind[B] < _ind[A] || _ind[A] < _ind[D]) && (_ind[B] < _ind[C] || _ind[C] < _ind[D]))
return B + 1;
}
return C + 1;
}
#endif // rtgsp
void init (int t)
{
;
}
int p[6];
void orderCoins ()
{
int l = getLightest(1, 2, 3), h = getHeaviest(1, 2, 3);
p[0] = l; p[1] = l ^ h; p[2] = h;
/*for (int i = 0; i <= 2; i++) cout << p[i] << " ";
cout << endl;*/
int p4 = getMedian(p[0], p[1], 4);
if (p4 == p[0])
{
for (int i = 3; i > 0; i--) p[i] = p[i - 1];
p[0] = 4;
}
else if (p4 == 4)
{
for (int i = 3; i > 1; i--) p[i] = p[i - 1];
p[1] = 4;
}
else
{
p4 = getMedian(p[1], p[2], 4);
if (p4 == 4)
{
p[3] = p[2];
p[2] = 4;
}
else
{
p[3] = 4;
}
}
/*for (int i = 0; i <= 3; i++) cout << p[i] << " ";
cout << endl;*/
int p5 = getMedian(p[1], p[2], 5);
if (p5 == p[1])
{
p5 = getMedian(p[0], p[1], 5);
if (p5 == p[0])
{
for (int i = 4; i > 0; i--) p[i] = p[i - 1];
p[0] = 5;
}
else
{
for (int i = 4; i > 1; i--) p[i] = p[i - 1];
p[1] = 5;
}
}
else if (p5 == 5)
{
for (int i = 4; i > 2; i--) p[i] = p[i - 1];
p[2] = 5;
}
else
{
p5 = getMedian(p[2], p[3], 5);
if (p5 == 5)
{
p[4] = p[3];
p[3] = 5;
}
else
{
p[4] = 5;
}
}
/*for (int i = 0; i <= 4; i++) cout << p[i] << " ";
cout << endl;*/
int p6 = getMedian(p[1], p[3], 6);
if (p6 == p[1])
{
p6 = getMedian(p[0], p[1], 6);
if (p6 == p[0])
{
for (int i = 5; i > 0; i--) p[i] = p[i - 1];
p[0] = 6;
}
else
{
for (int i = 5; i > 1; i--) p[i] = p[i - 1];
p[1] = 6;
}
}
else if (p6 == 6)
{
p6 = getMedian(p[1], p[2], p6);
if (p6 == 6)
{
for (int i = 5; i > 2; i--) p[i] = p[i - 1];
p[2] = 6;
}
else
{
for (int i = 5; i > 3; i--) p[i] = p[i - 1];
p[3] = 6;
}
}
else
{
p6 = getMedian(p[3], p[4], 6);
if (p6 == 6)
{
p[5] = p[4];
p[4] = 6;
}
else
{
p[5] = 6;
}
}
/*for (int i = 0; i <= 5; i++) cout << p[i] << " ";
cout << endl;*/
answer(p);
}
#ifdef rtgsp
int main() {
int T, i;
T = _getNumberOfTests();
init(T);
for (i = 1; i <= T; i++) {
_initNewTest();
orderCoins();
}
return 0;
}
#endif //rtgsp