#include <bits/stdc++.h>
#pragma GCC optimize("O2")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("avx,avx2,sse,sse2,fma")
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const long long maxn = 30010;
const long long mod = 1e9 + 7;
const long double PI = acos((long double)-1);
long long pw(long long a, long long b, long long md = mod) {
  long long res = 1;
  while (b) {
    if (b & 1) {
      res = (a * res) % md;
    }
    a = (a * a) % md;
    b >>= 1;
  }
  return (res);
}
int n, q;
pair<int, int> h[maxn];
pair<int, int> w[maxn];
int bad[maxn];
long long ans[maxn];
long long calc(int i, int j) {
  if (bad[w[j].second] == h[i].second) return (-1e17);
  return (h[i].first * 1LL * w[j].first);
}
long long solve() {
  ans[1] = calc(1, 1);
  ans[2] = max(calc(1, 1) + calc(2, 2), calc(1, 2) + calc(2, 1));
  for (int i = 3; i <= n; i++) {
    ans[i] = -1e17;
    ans[i] = max(ans[i], calc(i, i) + ans[i - 1]);
    ans[i] = max(ans[i], calc(i, i - 1) + calc(i - 1, i) + ans[i - 2]);
    ans[i] = max(ans[i], calc(i, i - 2) + calc(i - 1, i - 1) + calc(i - 2, i) +
                             ans[i - 3]);
    ans[i] = max(ans[i], calc(i, i - 2) + calc(i - 1, i) + calc(i - 2, i - 1) +
                             ans[i - 3]);
    ans[i] = max(ans[i], calc(i, i - 1) + calc(i - 1, i - 2) + calc(i - 2, i) +
                             ans[i - 3]);
  }
  return (ans[n]);
}
int32_t main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> q;
  for (int i = 1; i <= n; i++) cin >> w[i].first, w[i].second = i;
  for (int i = 1; i <= n; i++) cin >> h[i].first, bad[i] = i, h[i].second = i;
  sort(h + 1, h + n + 1);
  sort(w + 1, w + n + 1);
  reverse(h + 1, h + n + 1);
  reverse(w + 1, w + n + 1);
  while (q--) {
    int a, b;
    cin >> a >> b;
    swap(bad[a], bad[b]);
    cout << solve() << '\n';
  }
  return (0);
}
