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 JAVA):

Solution:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Questions {

    public static class fastScanner {
        BufferedReader br;
        StringTokenizer st;

        public fastScanner() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }

    }
    // javac Questions.java && java Questions < input.txt > output.txt
    public static void main(String[] args) {
        question1();
        // question2();
        // question3();
        // question4();
    }

    public static class Node {
        int val;
        Node next = null;

        public Node(int val) {
            this.val = val;
        }

        public Node(int val, Node next) {
            this.val = val;
            this.next = next;
        }
    }

    public static class LinkedList {
        Node head;
        Node tail;
        int size;

        // addLast
        public void add(int val) {
            this.size++;
            Node node = new Node(val);
            if (head == null) {
                this.head = this.tail = node;
            } else {
                this.tail.next = node;
                this.tail = node;
            }
        }
    }

    public static void question1() {
        fastScanner fs = new fastScanner();
        int t = fs.nextInt();
        while (t-- > 0) {
            int n = fs.nextInt();
            LinkedList ll = new LinkedList();
            while (n-- > 0) {
                int val = fs.nextInt();
                ll.add(val);
            }
            reorderList(ll.head);
            display(ll.head);
            System.out.println();
        }
    }

    public static void display(Node start) {
        Node temp = start;
        while (temp != null) {
            System.out.print(temp.val + " ");
            temp = temp.next;
        }
    }

    public static Node getMiddle(Node head) {
        if (head == null || head.next == null)
            return head;

        Node slow = head;
        Node fast = head;
        while (fast != null && fast.next != null) {
            slow = slow.next;
            fast = fast.next.next;
        }
        return slow;
    }

    public static Node reverseList(Node head) {
        if (head == null || head.next == null)
            return head;

        Node prev = null, curr = head;
        while (curr != null) {
            Node forwNode = curr.next;
            curr.next = prev;
            prev = curr;
            curr = forwNode;
        }

        return prev;
    }

    public static void reorderList(Node head) {
        if (head == null || head.next == null)
            return;

        Node middleNode = getMiddle(head);
        Node head2 = middleNode.next;
        middleNode.next = null;
        head2 = reverseList(head2);

        Node p1 = head, p2 = head2;
        while (p1 != null && p2 != null) {
            Node f1 = p1.next;
            Node f2 = p2.next;

            p1.next = p2;
            p2.next = f1;

            p1 = f1;
            p2 = f2;
        }
    }}