def c_pushpush(N, A):

    from collections import deque

    ans = deque([])  # リストの先頭への挿入はO(要素数)なので

    n_parity = N & 1

    for i, a in enumerate(A, 1):

        if n_parity == i & 1:

            ans.appendleft(a)

        else:

            ans.append(a)

    return ' '.join(map(str, ans))



N = int(eval(input()))

A = [int(i) for i in input().split()]

print((c_pushpush(N, A)))
def c_pushpush():

    # Aの奇数番目の要素と偶数番目の要素をそれぞれ一塊にすることは変わらない。

    # ただし、どちらを左右にするかは N の偶奇によって変わる

    N = int(eval(input()))

    A = [int(i) for i in input().split()]

    return ' '.join(map(str, A[int(N % 2 == 0)::2][::-1] + A[int(not N % 2 == 0)::2]))



print((c_pushpush()))
def c_pushpush(N, A):
    from collections import deque

    ans = deque([])  # リストの先頭への挿入はO(要素数)なので
    n_parity = N & 1
    for i, a in enumerate(A, 1):
        if n_parity == i & 1:
            ans.appendleft(a)
        else:
            ans.append(a)
    return " ".join(map(str, ans))


N = int(eval(input()))
A = [int(i) for i in input().split()]
print((c_pushpush(N, A)))

def c_pushpush():
    # Aの奇数番目の要素と偶数番目の要素をそれぞれ一塊にすることは変わらない。
    # ただし、どちらを左右にするかは N の偶奇によって変わる
    N = int(eval(input()))
    A = [int(i) for i in input().split()]
    return " ".join(
        map(str, A[int(N % 2 == 0) :: 2][::-1] + A[int(not N % 2 == 0) :: 2])
    )


print((c_pushpush()))

-def c_pushpush(N, A): -    from collections import deque - -    ans = deque([])  # リストの先頭への挿入はO(要素数)なので -    n_parity = N & 1 -    for i, a in enumerate(A, 1): -        if n_parity == i & 1: -            ans.appendleft(a) -        else: -            ans.append(a) -    return " ".join(map(str, ans)) +def c_pushpush(): +    # Aの奇数番目の要素と偶数番目の要素をそれぞれ一塊にすることは変わらない。 +    # ただし、どちらを左右にするかは N の偶奇によって変わる +    N = int(eval(input())) +    A = [int(i) for i in input().split()] +    return " ".join( +        map(str, A[int(N % 2 == 0) :: 2][::-1] + A[int(not N % 2 == 0) :: 2]) +    ) -N = int(eval(input())) -A = [int(i) for i in input().split()] -print((c_pushpush(N, A))) +print((c_pushpush()))