package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

var rd = bufio.NewReader(os.Stdin)

// 標準入力から1行読み込む。
func readLine() string {
	buf := make([]byte, 0, 1024)
	for {
		l, p, e := rd.ReadLine()
		if e != nil {
			panic(e)
		}
		buf = append(buf, l...)
		if !p {
			break
		}
	}
	return string(buf)
}

// 渡された文字列(空白区切りの整数の並び)をintのスライスにする。
func intsFromLine(line string) []int {
	slice := make([]int, 0, 1024)
	for _, str := range strings.Split(line, " ") {
		num, err := strconv.Atoi(str)
		if err != nil {
			panic(err)
		}
		slice = append(slice, num)
	}
	return slice
}

func main() {
	_ = intsFromLine(readLine())[0]
	nums := intsFromLine(readLine())
	Q := intsFromLine(readLine())[0]
	count := make([]int, 10000)
	total := 0

	for _, num := range nums {
		total += num
		count[num]++
	}

	for i := 0; i < Q; i++ {
		buf := intsFromLine(readLine())
		B, C := buf[0], buf[1]
		total += (C - B) * count[B]
		count[C] += count[B]
		count[B] = 0

		fmt.Println(total)
	}
}
