#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] = (G3[i] > a[i] * 1ll * b[i + 1] + a[i + 1] * 1ll * b[i + 2] +
                           a[i + 2] * 1ll * b[i]
                   ? 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] = (G3[i] > a[i] * 1ll * b[i + 2] + a[i + 1] * 1ll * b[i] +
                           a[i + 2] * 1ll * b[i + 1]
                   ? 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 = (0 > s1 - 5 ? 0 : s1 - 5); i < min(n, s1 + 5); i++) calc(i);
    for (int i = (0 > s2 - 5 ? 0 : s2 - 5); i < min(n, s2 + 5); i++) calc(i);
    if (n < 5) {
      dp[0] = 0;
      dp[1] = G1[0];
      dp[2] = (G2[0] > dp[1] + G1[1] ? G2[0] : dp[1] + G1[1]);
      dp[3] = (G3[0] > dp[2] + G1[2] ? G3[0] : dp[2] + G1[2]);
      dp[3] = (dp[3] > dp[1] + G2[1] ? dp[3] : dp[1] + G2[1]);
      n++;
      for (int i = 4; i < n; i++) {
        dp[i] = (dp[i - 1] + G1[i - 1] >
                         (dp[i - 2] + G2[i - 2] > dp[i - 3] + G3[i - 3]
                              ? dp[i - 2] + G2[i - 2]
                              : dp[i - 3] + G3[i - 3])
                     ? dp[i - 1] + G1[i - 1]
                     : (dp[i - 2] + G2[i - 2] > dp[i - 3] + G3[i - 3]
                            ? dp[i - 2] + G2[i - 2]
                            : dp[i - 3] + G3[i - 3]));
      }
      printf("%I64d\n", dp[n - 1]);
    } else {
      long long aa = 0;
      long long bb = G1[0];
      long long cc = (G2[0] > bb + G1[1] ? G2[0] : bb + G1[1]);
      long long tt;
      n++;
      for (int i = 3; i < n; i++) {
        tt =
            (cc + G1[i - 1] > (bb + G2[i - 2] > aa + G3[i - 3] ? bb + G2[i - 2]
                                                               : aa + G3[i - 3])
                 ? cc + G1[i - 1]
                 : (bb + G2[i - 2] > aa + G3[i - 3] ? bb + G2[i - 2]
                                                    : aa + G3[i - 3]));
        aa = bb;
        bb = cc;
        cc = tt;
      }
      printf("%I64d\n", cc);
    }
  }
  return 0;
}
