#include <bits/stdc++.h>
using namespace std;
long long dp[211111];
pair<int, int> A[211111], B[211111];
int ta[211111], tb[211111], a[211111], b[211111];
int n, q;
int g[211111];
long long G1[211111], G2[211111], G3[211111];
void calc(int i) {
  G1[i] = -1e18;
  G2[i] = -1e18;
  G3[i] = -1e18;
  if (g[i] != i) G1[i] = a[i] * 1ll * b[i];
  if (i + 1 < n && g[i] != i + 1 && g[i + 1] != i)
    G2[i] = a[i] * 1ll * b[i + 1] + a[i + 1] * 1ll * b[i];
  if (i + 2 < n) {
    if (g[i] != i + 1 && g[i + 1] != i + 2 && g[i + 2] != i)
      G3[i] = max(G3[i], a[i] * 1ll * b[i + 1] + a[i + 1] * 1ll * b[i + 2] +
                             a[i + 2] * 1ll * b[i]);
    if (g[i] != i + 2 && g[i + 1] != i && g[i + 2] != i + 1)
      G3[i] = max(G3[i], a[i] * 1ll * b[i + 2] + a[i + 1] * 1ll * b[i] +
                             a[i + 2] * 1ll * b[i + 1]);
  }
}
int main() {
  cin >> n >> q;
  for (int i = 0; i < n; i++) {
    scanf("%d", &A[i].first);
    A[i].second = i;
  }
  for (int i = 0; i < n; i++) {
    scanf("%d", &B[i].first);
    B[i].second = i;
  }
  sort(A, A + n);
  sort(B, B + n);
  for (int i = 0; i < n; i++) {
    a[i] = A[i].first;
    b[i] = B[i].first;
    ta[A[i].second] = i;
    tb[B[i].second] = i;
  }
  for (int i = 0; i < n; i++) g[ta[i]] = tb[i];
  for (int i = 0; i < n; i++) {
    calc(i);
  }
  for (int it = 0; it < q; it++) {
    int x, y;
    scanf("%d%d", &x, &y);
    x--;
    y--;
    int s1 = ta[x];
    int s2 = ta[y];
    swap(g[s1], g[s2]);
    for (int i = max(0, s1 - 5); i < min(n, s1 + 5); i++) calc(i);
    for (int i = max(0, s2 - 5); i < min(n, s2 + 5); i++) calc(i);
    dp[0] = 0;
    dp[1] = G1[0];
    dp[2] = max(G2[0], dp[1] + G1[1]);
    dp[3] = max(G3[0], dp[2] + G1[2]);
    dp[3] = max(dp[3], dp[1] + G2[1]);
    for (int i = 4; i <= n; i++) {
      dp[i] = -1e18;
      dp[i] = max(dp[i], dp[i - 1] + G1[i - 1]);
      dp[i] = max(dp[i], dp[i - 2] + G2[i - 2]);
      dp[i] = max(dp[i], dp[i - 3] + G3[i - 3]);
    }
    printf("%I64d\n", dp[n]);
  }
  return 0;
}
