#include <bits/stdc++.h>
using namespace std;
template <class T>
bool umin(T& a, T b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool umax(T& a, T b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
const int BLOK = 1500;
int n, q, st[200009], en[200009], bel[200009], arr[200009], cur = 1;
int S[135][200009];
int tap(int y, int x) {
  int res = 0;
  for (; x; x -= x & (-x)) res += S[y][x];
  return res;
}
int smaller(int x, int k) {
  if (x > n) return 0;
  int res = 0;
  if (bel[x] == cur) {
    for (int i = x; i <= n; i++) res += (arr[i] < k);
    return res;
  }
  for (int i = bel[x] + 1; i <= cur; i++) res += tap(i, k - 1);
  for (int i = x; i <= en[bel[x]]; i++) res += (arr[i] < k);
  return res;
}
void change(int y, int x, int val) {
  for (; x < 200009; x += x & (-x)) S[y][x] += val;
}
void upd(int x, int r, int a) {
  change(bel[x], r, -1);
  change(bel[x], a, +1);
}
void build() {
  st[1] = 1;
  for (int i = 1; i <= n; i++) {
    bel[i] = cur;
    arr[i] = i;
    change(cur, i, +1);
    if (i % BLOK == 0) {
      en[cur] = i;
      if (i < n) st[++cur] = i + 1;
    }
  }
  if (n % BLOK != 0) en[cur] = n;
}
int main() {
  scanf("%d%d", &n, &q);
  build();
  long long ans = 0;
  while (q--) {
    int l, r;
    scanf("%d%d", &l, &r);
    if (l == r) {
      printf("%lld\n", ans);
      continue;
    }
    if (l > r) swap(l, r);
    int l1 = arr[l], r1 = arr[r];
    int l2 = smaller(l + 1, l1), r2 = smaller(r + 1, r1);
    ans -= (n - l1) - (n - l - l2);
    ans -= l2 + r2;
    ans -= (n - r1) - (n - r - r2);
    ans += (l1 > r1);
    upd(l, l1, r1);
    upd(r, r1, l1);
    swap(arr[l], arr[r]);
    swap(l1, r1);
    l2 = smaller(l + 1, l1);
    r2 = smaller(r + 1, r1);
    ans += (n - l1) - (n - l - l2);
    ans += l2 + r2;
    ans += (n - r1) - (n - r - r2);
    ans -= (l1 > r1);
    printf("%lld\n", ans);
  }
  return 0;
}
