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;

typedef long long ll;
typedef vector<int> vi;
typedef pair<int,int> pi;
typedef vector<ll> vll;
typedef pair<ll,ll> pll;
typedef map<int,int> mii;
typedef map<ll,ll> mllll;
typedef map<int, vi> mivi;
typedef map<ll, vll> mllvll;

#define F first
#define S second
#define PB push_back
#define MP make_pair

#define SV(v) sort((v).begin(), (v).end())
#define REP0(a,b) for (int i = (a); i <= (b); ++i)
#define REP(i,a,b) for (int i = (a); i <= (b); ++i)
#define REPL0(a,b) for (int i = (a); i < (b); ++i)
#define REPL(i,a,b) for (int i = (a); i < (b); ++i)

#define DTI(a) (int)((a)-'0')
#define LATI(a) (int)((a)-'a')
#define UATI(a) (int)((a)-'A')

void read_arri(int &n, vi &arr) {
    int k;
    REPL0(0,n) {
        cin >> k;
        arr.PB(k);
    }
}

void read_arrll(int &n, vll &arr) {
    ll k;
    REPL0(0,n) {
        cin >> k;
        arr.PB(k);
    }
}

//struct P {
//    int x, y;
//    bool operator<(const P &p) {
//        if (x != p.x) return x < p.x;
//        else return y < p.y;
//    }
//};

//bool comp(string a, string b) {
//    if (a.size() != b.size()) return a.size() < b.size();
//    return a < b;
//}
//sort(v.begin(), v.end(), comp);

//freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);

//printf("%.9f\n", x);

// x %= m;
// if (x < 0) x += m;

void solve() {
    int n;
    cin >> n;
    vi a;
    read_arri(n,a);
    int l=0, r=n-1, i=1;
    while (l <= r) {
        if (i % 2) {
            cout << a[l] << " ";
            ++l;
        }
        else {
            cout << a[r] << " ";
            --r;
        }
        i = 1-i;
    }
    cout << "\n";
}

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);

    int t;
    cin >> t;
    while (t--) {
        solve();
    }
}