#include <bits/stdc++.h>
using namespace std;
struct human {
  int ind, h;
  long long f;
};
bool comp(const human &a, const human &b) { return (a.f < b.f); }
struct horse {
  int ind;
  long long f;
};
bool comp1(const horse &a, const horse &b) { return a.f < b.f; }
const int LEN = 30300;
const long long INF = 100000000000000000;
int n, m, ind[LEN], a, b, p;
long long dp[LEN], dp1[LEN][5], b1[LEN], b2[LEN], b3[LEN];
human hum[LEN];
horse hor[LEN];
void change(int i);
int main() {
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    cin >> hum[i].f;
    hum[i].ind = hum[i].h = i;
  }
  for (int i = 0; i < n; i++) {
    cin >> hor[i].f;
    hor[i].ind = i;
  }
  sort(hum, hum + n, comp);
  sort(hor, hor + n, comp1);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < 5; j++) {
      p = i + j - 2;
      if (p >= 0 && p < n) dp1[i][j] = hum[i].f * hor[p].f;
    }
  for (int i = n - 1; i >= 0; i--) change(i);
  for (int i = 0; i < n; i++) ind[hum[i].ind] = i;
  for (int i = 0; i < m; i++) {
    cin >> a >> b;
    a = ind[a - 1];
    b = ind[b - 1];
    swap(hum[a].h, hum[b].h);
    for (int j = 0; j < 5; j++) {
      p = a + 2 - j;
      if (p >= 0 && p < n) dp1[p][j] = hum[p].f * hor[a].f;
      p = b + 2 - j;
      if (p >= 0 && p < n) dp1[p][j] = hum[p].f * hor[b].f;
    }
    for (int j = max(0, a - 2); j <= a; j++) change(j);
    for (int j = max(0, b - 2); j <= b; j++) change(j);
    for (int j = n - 1; j >= 0; j--)
      dp[j] = max(b1[j] + dp[j + 1], max(b2[j] + dp[j + 2], b3[j] + dp[j + 3]));
    cout << dp[0] << endl;
  }
  return 0;
}
void change(int i) {
  b1[i] = b2[i] = b3[i] = -INF;
  if (hum[i].h != hor[i].ind) b1[i] = dp1[i][2];
  if (i < n - 1 && hum[i].h != hor[i + 1].ind && hum[i + 1].h != hor[i].ind)
    b2[i] = dp1[i][3] + dp1[i + 1][1];
  if (i < n - 2) {
    if (hum[i].h != hor[i + 2].ind) {
      if (hum[i + 1].h != hor[i].ind && hum[i + 2].h != hor[i + 1].ind)
        b3[i] = dp1[i][4] + dp1[i + 1][1] + dp1[i + 2][1];
      if (hum[i + 2].h != hor[i].ind && hum[i + 1].h != hor[i + 1].ind)
        b3[i] = max(b3[i], dp1[i][4] + dp1[i + 2][0] + dp1[i + 1][2]);
    }
    if (hum[i + 2].h != hor[i].ind && hum[i].h != hor[i + 1].ind &&
        hum[i + 1].h != hor[i + 2].ind)
      b3[i] = max(b3[i], dp1[i + 2][0] + dp1[i][3] + dp1[i + 1][3]);
  }
}
