Problem: Polycarp has a favorite sequence a[1 ... n] consisting of n integers. He wrote it out on the whiteboard as follows:

  * he wrote the number a_1 to the left side (at the beginning of the whiteboard); 
  * he wrote the number a_2 to the right side (at the end of the whiteboard); 
  * then as far to the left as possible (but to the right from a_1), he wrote the number a_3; 
  * then as far to the right as possible (but to the left from a_2), he wrote the number a_4; 
  * Polycarp continued to act as well, until he wrote out the entire sequence on the whiteboard. 

<image> The beginning of the result looks like this (of course, if n ≥ 4).

For example, if n=7 and a=[3, 1, 4, 1, 5, 9, 2], then Polycarp will write a sequence on the whiteboard [3, 4, 5, 2, 9, 1, 1].

You saw the sequence written on the whiteboard and now you want to restore Polycarp's favorite sequence.

Input

The first line contains a single positive integer t (1 ≤ t ≤ 300) — the number of test cases in the test. Then t test cases follow.

The first line of each test case contains an integer n (1 ≤ n ≤ 300) — the length of the sequence written on the whiteboard.

The next line contains n integers b_1, b_2,…, b_n (1 ≤ b_i ≤ 10^9) — the sequence written on the whiteboard.

Output

Output t answers to the test cases. Each answer — is a sequence a that Polycarp wrote out on the whiteboard.

Example

Input


6
7
3 4 5 2 9 1 1
4
9 2 7 1
11
8 4 3 1 2 7 8 7 9 4 2
1
42
2
11 7
8
1 1 1 1 1 1 1 1


Output


3 1 4 1 5 9 2 
9 1 2 7 
8 2 4 4 3 9 1 7 2 8 7 
42 
11 7 
1 1 1 1 1 1 1 1 

Note

In the first test case, the sequence a matches the sequence from the statement. The whiteboard states after each step look like this:

[3] ⇒ [3, 1] ⇒ [3, 4, 1] ⇒ [3, 4, 1, 1] ⇒ [3, 4, 5, 1, 1] ⇒ [3, 4, 5, 9, 1, 1] ⇒ [3, 4, 5, 2, 9, 1, 1].

Solution (in CPP):

Solution:
#define _CRT_SECURE_NO_WARNINGS
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<iomanip>
#include<string>
#include<vector>
#include<stack>
#include<bitset>
#include<cstdlib>
#include<cmath>
#include<set>
#include<unordered_set>
#include<list>
#include<deque>
#include<map>
#include<unordered_map>
#include<queue>
using namespace std;
typedef long long ll;
const double PI = acos(-1.0);
const double eps = 1e-6;
const int INF = 0x3f3f3f3f;
const int N = 100;
#define mst(a,x) memset(a,x,sizeof(a))
typedef int Node;
void read1(Node arr[], int n, int start) {//读入一维arr
	//arr[]大小为n，从arr[start]开始存放，start一般是0或者1
	//注意设置Node类型
	for (int i = start; i < n + start; ++i)cin >> arr[i];
}
#define COL_SIZE 100
void read2(Node arr[][COL_SIZE], int ROW, int COL, int start) {
	//类似上read1，注意设置COL_SIZE
	for (int i = start; i < ROW + start; ++i)
		for (int j = start; j < COL + start; ++j) {
			cin >> arr[i][j];
		}
}
void solve() {
	ll n;
	cin >> n;
	vector<ll> a,b(n);
	for (int i = 0; i < n; ++i)cin >> b[i];
	ll i = 0, j = n - 1;
	bool turn = true;
	while (i <= j) {
		if (turn) {
			a.push_back(b[i++]); turn = false;
		}
		else {
			a.push_back(b[j--]); turn = true;
		}
	}
	//for (int i : a) {
	//	cout << a[i] << (i < a.size() - 1 ? " " : "\n");
	//}
	for (int i = 0; i < a.size(); ++i) {
		cout << a[i] << (i < a.size() - 1 ? " " : "\n");

	}
}

int main() {
	ios::sync_with_stdio(0); cin.tie(0);
//	freopen("t.txt", "r", stdin);
	
	int t;
	cin >> t;
	while (t--)solve();
	

	return 0;
}