#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200010;
long long Answer;
vector<int> G[1010];
int n, m, l, r, Total, Block;
int Left[1010], Right[1010], Belong[MAXN], a[MAXN];
inline long long Read() {
  long long x = 0, f = 0;
  char c = getchar();
  while (!isdigit(c)) {
    f |= c == '-';
    c = getchar();
  }
  while (isdigit(c)) {
    x = (x << 1) + (x << 3) + (c ^ 48);
    c = getchar();
  }
  return f ? -x : x;
}
inline void Write(const long long &x) {
  if (x < 0) {
    putchar('-');
    Write(-x);
    return;
  }
  if (x > 9) {
    Write(x / 10);
  }
  putchar((x % 10) ^ 48);
  return;
}
inline void Init() {
  register int i, j = 1;
  Block = sqrt(n);
  Total = ceil(n * 1.0 / Block);
  for (i = 1; i <= Total; ++i) {
    Left[i] = j;
    for (; j <= i * Block and j <= n; ++j) {
      Belong[j] = i;
      a[j] = j;
      G[i].push_back(j);
    }
    Right[i] = j - 1;
  }
  return;
}
inline void UpDate(int left, int right) {
  register int posl = Belong[left], posr = Belong[right];
  if (posl ^ posr) {
    G[posl].erase(lower_bound(G[posl].begin(), G[posl].end(), a[left]));
    G[posr].erase(lower_bound(G[posr].begin(), G[posr].end(), a[right]));
    G[posr].insert(upper_bound(G[posr].begin(), G[posr].end(), a[left]),
                   a[left]);
    G[posl].insert(upper_bound(G[posl].begin(), G[posl].end(), a[right]),
                   a[right]);
  }
  a[left] ^= a[right];
  a[right] ^= a[left];
  a[left] ^= a[right];
  return;
}
inline long long Query(int left, int right, int value) {
  long long Cur = 0;
  register int i, posl = Belong[left], posr = Belong[right];
  if (left > right) {
    return 0;
  }
  if (posl + 1 >= posr) {
    for (i = left; i <= right; ++i) {
      Cur += (a[i] < value);
    }
  } else {
    for (i = left; i <= Right[posl]; ++i) {
      Cur += (a[i] < value);
    }
    for (i = Left[posr]; i <= right; ++i) {
      Cur += (a[i] < value);
    }
    for (i = posl + 1; i ^ posr; ++i) {
      Cur += upper_bound(G[i].begin(), G[i].end(), value) - G[i].begin();
    }
  }
  return Cur;
}
signed main() {
  register int i;
  n = Read(), m = Read(), Init();
  for (i = 1; i <= m; ++i) {
    l = Read(), r = Read();
    if (l ^ r) {
      if (l > r) {
        l ^= r, r ^= l, l ^= r;
      }
      Answer += 2 * (Query(l + 1, r - 1, a[r]) - Query(l + 1, r - 1, a[l])) +
                ((a[l] < a[r])   ? 1
                 : (a[l] ^ a[r]) ? -1
                                 : 0);
      Write(Answer), putchar('\n');
      UpDate(l, r);
    } else {
      Write(Answer), putchar('\n');
    }
  }
  return 0;
}
