#include <bits/stdc++.h>
#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("Ofast")
using namespace std;
const long long INF64 = 1e18;
const long long INF32 = 1e9;
const double EPS = static_cast<double>(1e-10);
const double PI = 2.0 * acos(0.0);
const long long MOD = (long long)1e9 + 7;
long long powMod(long long a, long long b) {
  long long res = 1;
  a %= MOD;
  assert(b >= 0);
  for (; b; b >>= 1) {
    if (b & 1) res = res * a % MOD;
    a = a * a % MOD;
  }
  return res;
}
long long invMod(long long a) {
  long long b = MOD, u = 1, v = 0;
  while (b) {
    long long t = a / b;
    a -= t * b;
    swap(a, b);
    u -= t * v;
    swap(u, v);
  }
  return (MOD + u) % MOD;
}
const long long day[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
mt19937 rnd(239);
vector<long long> prefixSum(vector<long long> &a) {
  vector<long long> b;
  std::partial_sum(a.begin(), a.end(), b.begin());
  return b;
}
long long mostSignDigit(long long n) {
  double k = log10(n);
  return (long long)pow(10, k - floor(k));
}
long long numOfDigits(long long n) { return (long long)floor(log10(n)) + 1; }
bool isPowerOfTwo(long long x) { return x && (!(x & (x - 1))); }
bool allPositive(vector<long long> &a) {
  return all_of(begin(a), end(a), [](long long x) { return x > 0; });
}
bool anyPositive(vector<long long> &a) {
  return any_of(begin(a), end(a), [](long long x) { return x > 0; });
}
bool nonePositive(vector<long long> &a) {
  return none_of(begin(a), end(a), [](long long x) { return x > 0; });
}
void FILEIO() {
  freopen("in.txt", "r", stdin);
  freopen("out.txt", "w", stdout);
}
void __print(long long x) { cerr << x; }
void __print(long x) { cerr << x; }
void __print(unsigned x) { cerr << x; }
void __print(unsigned long x) { cerr << x; }
void __print(unsigned long long x) { cerr << x; }
void __print(float x) { cerr << x; }
void __print(double x) { cerr << x; }
void __print(long double x) { cerr << x; }
void __print(char x) { cerr << '\'' << x << '\''; }
void __print(const char *x) { cerr << '\"' << x << '\"'; }
void __print(const string &x) { cerr << '\"' << x << '\"'; }
void __print(bool x) { cerr << (x ? "T" : "F"); }
template <typename T, typename V>
void __print(const pair<T, V> &x) {
  cerr << '{';
  __print(x.first);
  cerr << ',';
  __print(x.second);
  cerr << '}';
}
template <typename T>
void __print(const T &x) {
  long long f = 0;
  cerr << '{';
  for (auto &i : x) cerr << (f++ ? "," : ""), __print(i);
  cerr << "}";
}
void _print() { cerr << "]\n"; }
template <typename T, typename... V>
void _print(T t, V... v) {
  __print(t);
  if (sizeof...(v)) cerr << ", ";
  _print(v...);
}
void solve() {
  long long n;
  cin >> n;
  map<long long, long long> mp;
  for (long long i = (0); i < (n); i++) {
    long long t;
    cin >> t;
    mp[t]++;
  }
  long long sum = 0;
  for (auto z : mp) sum += z.first * z.second;
  long long q;
  cin >> q;
  for (long long i = (0); i < (q); i++) {
    long long b, c;
    cin >> b >> c;
    if (mp.find(b) == mp.end())
      cout << sum << "\n";
    else {
      sum -= b * mp[b];
      for (long long i = (0); i < (mp[b]); i++) mp[c]++;
      sum += c * mp[b];
      mp[b] = 0;
      cout << sum << "\n";
    }
  }
  cout.flush();
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie();
  { solve(); }
  return 0;
}
