#include <bits/stdc++.h>
using namespace std;

void Bumerang(int n, int q, int* p, int* w, int* s, int* k, long long* ans){
    int z = -1;
    vector<int> cnt(n+1, 0);
    for(int i = 1;i<=n;i++){
        cnt[p[i]]++;
    }
    for(int i = 1;i<=n;i++){
        if(cnt[i]>1) z = i;
    }
    multiset<long long> st;
    for(int i = 2;i<=n;i++){
        st.insert(-w[i]);
    }
    for(int i = 1;i<=q;i++){
        int x = k[i];
        st.erase(st.find(-w[s[i]]));
        st.insert(-x);
        w[s[i]] = x;
        long long a = *st.begin();
        st.erase(st.begin());
        long long b = *st.begin();
        st.erase(st.begin());
        long long c = *st.begin();
        st.erase(st.begin());
        ans[i] = -(a+b+c);
        st.insert(a);
        st.insert(b);
        st.insert(c);
    }
    return;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int N, Q;
    cin >> N >> Q;

    int* p = new int[N + 1];
    int* w = new int[N + 1];

    for (int i = 1; i <= N; i++) {
        cin >> p[i];
    }

    for (int i = 1; i <= N; i++) {
        cin >> w[i];
    }

    int* s = new int[Q + 1];
    int* k = new int[Q + 1];
    long long* ans = new long long[Q + 1];

    for (int i = 1; i <= Q; i++) {
        cin >> s[i];
    }

    for (int i = 1; i <= Q; i++) {
        cin >> k[i];
    }

    Bumerang(N, Q, p, w, s, k, ans);

    for (int i = 1; i <= Q; i++) {
        cout << ans[i] << '\n';
    }

    delete[] p;
    delete[] w;
    delete[] s;
    delete[] k;
    delete[] ans;

    return 0;
}