// Slower C++ solution:
#pragma GCC optimize(3)

#include<iostream>

#include<cstdio>

#include<cstdlib>

#include<cmath>

#include<cstring>

#include<string>

#include<algorithm>

#include<vector>

#include<map>

#include<set>

#include<list>

#include<queue>

#include<stack>

#include<bitset>

#include<deque>

using namespace std;

#define ll long long

#define inf 0x3f3f3f3f

#define ri register int

#define il inline

#define fi first

#define se second

#define mp make_pair

#define pi pair<int,int>

#define mem0(x) memset((x),0,sizeof (x))

#define mem1(x) memset((x),0x3f,sizeof (x))

il char gc() {

	static const int BS = 1 << 22;

	static unsigned char buf[BS], *st, *ed;

	if (st == ed) ed = buf + fread(st = buf, 1, BS, stdin);

	return st == ed ? EOF : *st++;

}

#define gc getchar

template<class T>void in(T &x) {

	x = 0;

	bool f = 0;

	char c = gc();

	while (c < '0' || c > '9') {

		if (c == '-') f = 1;

		c = gc();

	}

	while ('0' <= c && c <= '9') {

		x = (x << 3) + (x << 1) + (c ^ 48);

		c = gc();

	}

	if (f) x = -x;

}

#undef gc

#define pb push_back

#define N 100010

#define M N

#define int ll

int v[M], u[M], nx[M];

int cnt, head[N];

il void add(int uu, int vv) {

	u[++cnt] = uu, v[cnt] = vv, nx[cnt] = head[uu];

	head[uu] = cnt;

}

int n, m, k;

double pos[N];

double de[N];

double ans[N];

int num[N], ys[N];

int cur;

int bel[N], rk[N];

vector<int>hv[N];

void dfs(int x, int k) {

	bel[x] = k;

	hv[k].pb(x);

	rk[x] = hv[k].size() - 1;

	for (ri i = head[x]; i; i = nx[i])

		if (!bel[v[i]]) dfs(v[i], k);

}

signed main() {

#ifndef ONLINE_JUDGE

	//freopen("in.in", "r", stdin);

#endif

	in(n);

	for (ri i = 1; i <= n; ++i) {

		scanf("%lf", &pos[i]);

		de[i] = pos[i] - pos[i - 1];

		num[i] = i;

	}

	in(m), in(k);

	for (ri i = 1, t; i <= m; ++i) {

		in(t);

		swap(num[t], num[t + 1]);

	}

	for (ri i = 1; i <= n; ++i) ys[num[i]] = i;

	for (ri i = 1; i <= n; ++i)

		add(i, ys[i]);

	for (ri i = 1; i <= n; ++i)

		if (!bel[i]) {

			++cur;

			dfs(i, cur);

		}

	for (ri i = 1, t; i <= n; ++i) {

		t = hv[bel[i]][(rk[i] + k) % hv[bel[i]].size()];

		ans[t] = de[i];

	}

	double tmp = 0.0;

	for (ri i = 1; i <= n; ++i) {

		tmp += ans[i];

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

	}

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 3.5861175009912984x):
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

#define rg register



template <typename _Tp> inline _Tp read(_Tp&x){

	char c11=getchar(),ob=0;x=0;

	while(c11^'-'&&!isdigit(c11))c11=getchar();if(c11=='-')ob=1,c11=getchar();

	while(isdigit(c11))x=x*10+c11-'0',c11=getchar();if(ob)x=-x;return x;

}



const int N=101000;

int a[N],vis[N],st[N];

ll b[N],p[N],k;

int n,m,tp;



void init();void work();void print();

int main(){init();work();print();return 0;}



void work(){

	int x;

	for(rg int i=1;i<=m;++i)read(x),swap(a[x],a[x+1]);

	for(rg int i=1;i<=n;++i)if(!vis[i]){

		vis[st[0]=x=i]=tp=1;

		while(!vis[a[x]])

			vis[st[tp++]=x=a[x]]=1;

		int e=k%tp;

		for(rg int j=0;j<tp;++j)

			b[st[j]]=p[st[j+e<tp?j+e:j+e-tp]];

	}

}



void print(){

	ll sm(0ll);

	for(rg int i=1;i<=n;++i)

		printf("%lld\n",sm+=b[i]);

}



void init(){

	read(n);

	for(rg int i=1;i<=n;++i)read(p[i]),a[i]=i;

	for(rg int i=n;i;--i)p[i]-=p[i-1];

	read(m),read(k);

}