#define ENABLE_LL
#include <iostream>
#include <cstdio>
#include <map>
#include <set>
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <queue>
#include <cmath>
#include <cstring>
using namespace std;

void init();
void solve();
int main(){
try { 

#ifndef CUSTOM_MAIN
#ifdef MULTIPLE_TEST_CASES_WITH_T

int T; scanf("%d",&T); while(T--) {init(); solve();}

#else
#ifdef MULTIPLE_TEST_CASES_WITHOUT_T

while(1) {try{init(); } catch(bool t){return 0;} solve(); }

#else

init(); solve();

#endif
#endif
#endif

} catch (const char* s) { return 0; }
    return 0;
}

#ifdef ENABLE_LL
#define int long long
#endif

#ifdef ENABLE_LL
#define I "%lld"
#define II "%lld%lld"
#define III "%lld%lld%lld"
#define IIII "%lld%lld%lld%lld"
#define IN "%lld\n"
#define IIN "%lld%lld\n"
#define IIIN "%lld%lld%lld\n"
#define IIIIN "%lld%lld%lld%lld\n"
#else
#define I "%d"
#define II "%d%d"
#define III "%d%d%d"
#define IIII "%d%d%d%d"
#define IN "%d\n"
#define IIN "%d%d\n"
#define IIIN "%d%d%d\n"
#define IIIIN "%d%d%d%d\n"
#endif

#ifdef __LOCALE__
#define see(a) std::cout << #a << "=" << a << std::endl
#define ses(a) std::cout << #a << "=" << a << " " 
#else
#define see(a) //std::cout << #a << "=" << a << std::endl
#define ses(a)
#endif
#define repe(a,b) for (int a=0;a<(int)b.size();a++)
#define rep(i,n) for (int i=0;i<n;i++)
#define repa(i,n) for (int i=1;i<=n;i++)
#define repi(i,a,b) for (int i=a;i<=b;i++) 
#define repb(i,a,b) for (int i=a;i>=b;i--)
typedef pair < int , int > pr; typedef pair < pr  , int > prr;
#define L first
#define R second
template <class T> inline bool checkMin(T& a , T b) { return (a > b ? a=b,1 : 0); }
template <class T> inline bool checkMax(T& a , T b) { return (a < b ? a=b,1 : 0); }
class Scanner{ private: istream& ist;public: Scanner(istream& in):ist(in){} string next(){ string r; ist >> r; return r; } string nextLine(){ string r; getline(ist,r); return r; } int nextInt(){ int r; ist >> r; return r; } double nextDouble(){ double r; ist >> r; return r; } char nextChar(){ char r; ist>>r; return r;} }; Scanner sc(cin);
void ALERT(bool judgememt, const char* phrase) { if (judgememt) { puts(phrase); throw "ALERT"; } }
bool alert(bool judgememt, const char* phrase) { if (judgememt) puts(phrase); return judgememt; }

const int N = 100005;
const int K = 60;
vector < int > swp[K];

int n, m, k;
vector < int > aa;

inline vector < int > Init() {
    vector < int > res(n-1);
    rep (i,n-1) res[i] = i;
    return res;
}

vector < int > To (vector < int > a, vector < int > b) {
    vector < int > res = Init();
    rep (i,n-1) res[i] = a[b[i]];
    return res;
}

void init() {
    scanf(I,&n);
    rep (i,n) aa.push_back(sc.nextInt());
    scanf(II,&m,&k);
    swp[0] = Init();
    rep (i,m) {
        int a=sc.nextInt();
        see(a);
        swap(swp[0][a-2],swp[0][a-1]);
    }
    rep (i,K-1)  {
        swp[i+1] = To(swp[i],swp[i]);
        rep (j,n-1) ses(swp[i][j]); see("");
    }
}

void solve() {
    vector < int > a=Init();
    repb(i,K-1,0) {
        int d = 1LL<<i;
        if (k >= d) {
            k -= d;
            ses(k);see(i);
            a = To(a,swp[i]);
        }
    }
        rep (j,n-1) ses(a[j]); see("");
    vector < int > s;
    rep (i,n-1) s.push_back(aa[i+1]-aa[i]);
    vector < int > an = To(s, a);
    vector < int > ans;
    ans.push_back(aa[0]);
    rep (i,n-1) ans.push_back(ans.back() + an[i]);
    for (int i: ans) printf(IN,i);
}


Measured memory_bytes: 55732