Swap
Совсем недавно на одном из занятий по программированию Петя изучил оператор цикла while. Особенно Пете понравилось использовать этот оператор для изменения порядка элементов в некотором массиве на противоположный. Для этого Петя даже написал специальную процедуру.
procedure Swap(i, j : integer); var tmp : integer; begin while i < j do begin tmp := a[i]; a[i] := a[j]; a[j] := tmp; i := i + 1; j := j - 1; end; end;
На языке программирования Pascal эта процедура выглядит так:
void Swap(int i, int j) { int tmp; while (i < j) { tmp = a[i]; a[i] = a[j]; a[j] = tmp; i++; j--; } return; }
А на языке программирования С — вот так:
Обе процедуры работают с глобальным массивом натуральных чисел a_1, a_2, …, a_N. Элементы массива пронумерованы с 1.
Теперь Петю интересует вопрос, как будет выглядеть некоторый заданный массив из N натуральных чисел, если к нему последовательно применять процедуры Swap(1, N), затем Swap(1, N-1), затем Swap(1, N-2), и так далее до Swap(1, 2)?
Входные данные
Входной файл содержит две строки. В первой строке записано единственное натуральное число N (2 ≤ N ≤ 100000) — количество элементов в массиве.
Во второй строке записаны N натуральных чисел a_1, a_2, …, a_N, (1 ≤ a_i ≤ 1000), разделённых пробелами — элементы массива.
Выходные данные
Выведите единственную строку, содержащую элементы исходного массива, разделённые пробелами, в том порядке, который получится после применения к этому массиву процедуры Swap описанным выше способом.