← Home
package main

import (
	"bufio"
	"io"
	"os"
	"strconv"
)

type FastScanner struct {
	data []byte
	idx  int
}

func (fs *FastScanner) NextInt() int {
	n := len(fs.data)
	for fs.idx < n {
		c := fs.data[fs.idx]
		if (c >= '0' && c <= '9') || c == '-' {
			break
		}
		fs.idx++
	}
	sign := 1
	if fs.data[fs.idx] == '-' {
		sign = -1
		fs.idx++
	}
	val := 0
	for fs.idx < n {
		c := fs.data[fs.idx]
		if c < '0' || c > '9' {
			break
		}
		val = val*10 + int(c-'0')
		fs.idx++
	}
	return sign * val
}

type BIT struct {
	n   int
	bit []int64
}

func NewBIT(n int) *BIT {
	return &BIT{n: n, bit: make([]int64, n+2)}
}

func (ft *BIT) Add(i int, delta int64) {
	for i <= ft.n {
		ft.bit[i] += delta
		i += i & -i
	}
}

func (ft *BIT) Sum(i int) int64 {
	var s int64
	for i > 0 {
		s += ft.bit[i]
		i -= i & -i
	}
	return s
}

func main() {
	data, _ := io.ReadAll(os.Stdin)
	fs := FastScanner{data: data}

	n := fs.NextInt()
	a := make([]int, n)
	for i := 0; i < n; i++ {
		a[i] = fs.NextInt()
	}

	p := make([]int64, n)
	var total int64
	for i := 0; i < n; i++ {
		x := int64(fs.NextInt())
		p[i] = x
		total += x
	}

	m := fs.NextInt()
	b := make([]int, m+1)
	for i := 1; i <= m; i++ {
		b[i] = fs.NextInt()
	}

	exact := make([]int, n+1)
	for i := 1; i <= m; i++ {
		exact[b[i]] = i
	}

	stage := make([]int, n+1)
	j := 1
	for v := 1; v <= n; v++ {
		for j <= m && b[j] < v {
			j++
		}
		stage[v] = j
	}

	bit := NewBIT(m)
	val := make([]int64, m+1)
	reach := make([]bool, m+1)
	reach[0] = true

	for i := 0; i < n; i++ {
		v := a[i]
		cost := p[i]

		t := stage[v]
		if t <= m && cost > 0 {
			bit.Add(t, cost)
		}

		j := exact[v]
		if j != 0 {
			var prev int64
			if j == 1 {
				prev = 0
			} else {
				if !reach[j-1] {
					continue
				}
				prev = val[j-1] + bit.Sum(j-1)
			}
			cand := prev + cost - bit.Sum(j)
			if !reach[j] || cand > val[j] {
				val[j] = cand
				reach[j] = true
			}
		}
	}

	out := bufio.NewWriterSize(os.Stdout, 1<<20)
	if !reach[m] {
		out.WriteString("NO\n")
	} else {
		keep := val[m] + bit.Sum(m)
		ans := total - keep
		out.WriteString("YES\n")
		out.WriteString(strconv.FormatInt(ans, 10))
		out.WriteByte('\n')
	}
	out.Flush()
}