#include <bits/stdc++.h>
using namespace std;
const int NR = 2e5;
const int MR = 450;
int B;
int n;
int a[NR + 1];
vector<int> adj[MR + 1];
void change(int l, int r) {
  int id1 = l / B, id2 = r / B;
  int x = a[l], y = a[r];
  int k = find(adj[id1].begin(), adj[id1].end(), x) - adj[id1].begin();
  adj[id1][k] = y;
  k = find(adj[id2].begin(), adj[id2].end(), y) - adj[id2].begin();
  adj[id2][k] = x;
  sort(adj[id1].begin(), adj[id1].end());
  sort(adj[id2].begin(), adj[id2].end());
}
long long ask(int l, int r) {
  int x = a[l], y = a[r];
  int id1 = l / B, id2 = r / B;
  long long ans = 0;
  int f = 1;
  if (x > y) {
    swap(x, y);
    f = -1;
  }
  if (id1 == id2) {
    for (int i = l; i <= r; i++) {
      if (a[i] > x && a[i] < y) ans++;
    }
  } else {
    for (int i = id1 + 1; i <= id2 - 1; i++) {
      ans += upper_bound(adj[i].begin(), adj[i].end(), y) -
             lower_bound(adj[i].begin(), adj[i].end(), x);
    }
    for (int i = l; i <= (id1 + 1) * B - 1; i++) {
      if (a[i] > x && a[i] < y) ans++;
    }
    for (int i = id2 * B; i <= r; i++) {
      if (a[i] > x && a[i] < y) ans++;
    }
  }
  swap(a[l], a[r]);
  return (2 * ans + 1) * f;
}
int main() {
  int T;
  scanf("%d%d", &n, &T);
  B = sqrt(n);
  for (int i = 1; i <= n; i++) {
    a[i] = i;
    adj[i / B].push_back(i);
  }
  int l, r;
  long long ANS = 0;
  while (T--) {
    scanf("%d%d", &l, &r);
    if (l == r) {
      printf("%lld\n", ANS);
      continue;
    }
    if (l > r) swap(l, r);
    change(l, r);
    ANS += ask(l, r);
    printf("%lld\n", ANS);
  }
  return 0;
}
