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:
#include<bits/stdc++.h>
using namespace std;

///// Defines /////
#define FAST ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
#define f(i, beg, end) for(int i=beg; i<end; i++)
#define rf(i, beg, end) for(int i=beg; i>=end; i--)
#define ms(x, a) memset(x, a, sizeof(x))
#define Max(x, y, z) max(x, max(y, z))
#define Min(x, y, z) min(x, min(y, z))
#define max__(a, n) *max_element(a, a+n)
#define min__(a, n) *min_element(a, a+n)
#define endl '\n'
#define ln cout << '\n'
#define yes cout << "YES\n"
#define no cout << "NO\n"
#define imp cout << "-1\n"
#define all(v) v.begin(), v.end()
#define rev(v) v.rbegin(), v.rend()
#define in insert
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
#define sz(v) (int)v.size()
#define len length()
#define ub upper_bound
#define lb lower_bound

///// Data types and Containers /////
typedef long long ll;
typedef vector<int> vi;
typedef vector<int>::iterator viit;
typedef vector<char> vc;
typedef vector<char>::iterator vcit;

///// Constants /////
const long long MOD = 1e9+7;
const long long INF = LONG_LONG_MAX;
const long long MINF = LONG_LONG_MIN;
const int N = 2e5+5;

///// F(X)'s /////
template <typename T> inline T abs(T x) {return x < 0? -x : x;}
inline ll pow_mod(ll x,ll n) {ll r=1;while(n){if(n%2)r=(r*x)%MOD;x=(x*x)%MOD;n/=2;}return r;}
inline ll pow_(ll x,ll n) {ll r=1;while(n){if(n%2)r=(r*x);x=(x*x);n/=2;}return r;}

inline void solve()
{
    int n; cin >> n;
    int a[n]; 
    f(i,0,n) cin >> a[i];
    
    int i = 0, j = n-1, f = 1;
    while(i<=j) {
        if(f) cout << a[i++] << " ";
        else cout << a[j--] << " ";
        f ^= 1;
    }
    ln;
}

int main()
{
    FAST
    int t=1; cin >> t;
    while(t--) solve();
}