#include <stdio.h>
#include <stdlib.h>
struct node
{
int *h, len, size;
}list;
void creat()
{
list.h = (int *)malloc(1000005 * sizeof(int));
}
void get(int n)
{
for(int i = 1; i <= n; i++)
{
scanf("%d", &list.h[i]);
}
}
void exchange(int l, int r)
{
int len = (l + r) / 2;
for(int i = l; i <= len; i++)
{
int t = list.h[i];
int loc = r - (i - l);
list.h[i] = list.h[loc];
list.h[loc] = t;
}
}
void change(int n, int m)
{
exchange(1, n);
exchange(1, n - m);
exchange(n - m + 1, n);
}
void print(int n)
{
for(int i = 1; i <= n; i++)
{
if(i != 1)printf(" ");
printf("%d", list.h[i]);
}
printf("\n");
}
int main()
{
int n, m, x, i;
scanf("%d", &n);
creat();
get(n);
scanf("%d", &m);
for(i = 1; i <= m; i++)
{
scanf("%d", &x);
change(n, x);
print(n);
}
return 0;
}