int dp[10000] = {0};//队列的数组
void baoshu(int dp[], int num, bool flag, int remain)
{
if (remain <= 3)
{
for (int i = 0; i < num; i++)
{
if (dp[i] != 0)
cout << dp[i] << " ";
}
return;
}
int cnt = 1;//当前报数的数字
if (flag)//报2的数
{
for (int i = 0; i < num; i++)
{
if (dp[i] == 0)
continue;
if (cnt == 2)
{
dp[i] = 0;
cnt = 1;
}
else
cnt++;
}
remain = remain % 2 == 0 ? remain / 2 : (remain + 1) / 2;
}
else//报3的数
{
for (int i = 0; i < num; i++)
{
if (dp[i] == 0)
continue;
if (cnt == 3)
{
dp[i] = 0;
cnt = 1;
}
else
cnt++;
}
remain = remain % 3 == 0 ? remain * 2 / 3 : remain * 2 / 3 + 1;
}
baoshu(dp, num, !flag, remain);
}
int main()
{
//int **arr = new int *[4];
//for (int i = 0; i < 4; i++)
// arr[i] = new int[4];
int N = 0;
int num;
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> num;
for (int i = 0; i < num; i++)
{
dp[i] = i + 1;
}
baoshu(dp, num, true, num);
}
return 0;
}