/* Clearink */

#include <set>
#include <cstdio>

#define rep( i, l, r ) for ( int i = l, repEnd##i = r; i <= repEnd##i; ++i )
#define per( i, r, l ) for ( int i = r, repEnd##i = l; i >= repEnd##i; --i )

inline int rint() {
	int x = 0, f = 1, s = getchar();
	for ( ; s < '0' || '9' < s; s = getchar() ) f = s == '-' ? -f : f;
	for ( ; '0' <= s && s <= '9'; s = getchar() ) x = x * 10 + ( s ^ '0' );
	return x * f;
}

template<typename Tp>
inline void wint( Tp x ) {
	if ( x < 0 ) putchar( '-' ), x = -x;
	if ( 9 < x ) wint( x / 10 );
	putchar( x % 10 ^ '0' );
}

typedef long long LL;

const int MAXN = 2e5, MAXLG = 17;
int n, q, a[MAXN + 5], b[MAXN + 5], fa[MAXN + 5][MAXLG + 5];
int top, stk[MAXN + 5], p[MAXN + 5], dep[MAXN + 5];
LL ans, val[MAXN + 5], dlt[MAXN + 5], sum[MAXN + 5];
int cnt[MAXN + 5]; bool vis[MAXN + 5];
std::set<int> st;

inline void build() {
	rep ( i, 1, n ) {
		for ( ; top && p[stk[top]] < p[i]; --top );
		dep[i] = dep[fa[i][0] = stk[top]] + 1, stk[++top] = i;
		val[fa[i][0]] += b[i];
		if ( !fa[i][0] ) ans += b[i];
		for ( int j = 1; fa[i][j - 1];
			fa[i][j] = fa[fa[i][j - 1]][j - 1], ++j );
	}
}

inline int lca( int u, int v ) {
	if ( dep[u] < dep[v] ) u ^= v ^= u ^= v;
	for ( int i = 17; ~i; --i ) if ( dep[fa[u][i]] >= dep[v] ) u = fa[u][i];
	if ( u == v ) return u;
	for ( int i = 17; ~i; --i ) if ( fa[u][i] != fa[v][i] ) {
		u = fa[u][i], v = fa[v][i];
	}
	return fa[u][0];
}

inline void erase( const int u ) {
	auto it( st.find( u ) );
	int p = 0, q = 0;
	if ( it != st.begin() ) p = lca( *std::prev( it ), u );
	if ( ++it != st.end() ) q = lca( *it, u );
	st.erase( --it );
	if ( dep[p] < dep[q] ) p = q;
	ans -= sum[u] - sum[p];
}

inline void insert( const int u ) {
	auto it( st.insert( u ).first );
	int p = 0, q = 0;
	if ( it != st.begin() ) p = lca( *std::prev( it ), u );
	if ( ++it != st.end() ) q = lca( *it, u );
	if ( dep[p] < dep[q] ) p = q;
	ans += sum[u] - sum[p];
}

int main() {
	n = rint(), q = rint();
	rep ( i, 1, n ) p[i] = rint();
	rep ( i, 1, n ) val[i] += a[i] = rint();
	rep ( i, 1, n ) val[i] -= b[i] = rint();
	build();
	per ( i, n, 1 )	{
		dlt[i] += val[i];
		if ( dlt[i] < 0 ) dlt[fa[i][0]] += dlt[i];
	}
	dlt[0] += val[0], sum[0] = dlt[0];
	rep ( i, 1, n ) {
		if ( dlt[i] < 0 ) sum[i] = sum[fa[i][0]];
		else sum[i] = sum[fa[i][0]] + dlt[i];
	}
	st.insert( 0 ), cnt[0] = 1, ans = sum[0];
	for ( int s; q--; ) {
		s = rint();
		if ( vis[s] ) {
			vis[s] = false;
			if ( !--cnt[fa[s][0]] ) erase( fa[s][0] );
		} else {
			vis[s] = true;
			if ( !cnt[fa[s][0]]++ ) insert( fa[s][0] );
		}
		wint( ans ), putchar( '\n' );
	}
	return 0;
}

