#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 10;
const int SIZ = 512;
vector<int> block[maxn];
int bnt[maxn], A[maxn];
int n, m;
void init() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) {
    A[i] = i;
    bnt[i] = (i - 1) / SIZ + 1;
    block[bnt[i]].push_back(i);
  }
}
int query(int L, int R, int v) {
  int k = 0, lb = bnt[L], rb = bnt[R];
  if (lb == rb) {
    for (int i = L; i <= R; i++)
      if (A[i] < v) k++;
  } else {
    for (int i = L; i <= lb * SIZ; i++)
      if (A[i] < v) k++;
    for (int i = (rb - 1) * SIZ + 1; i <= R; i++)
      if (A[i] < v) k++;
    for (int i = lb + 1; i < rb; i++)
      k += lower_bound(block[i].begin(), block[i].end(), v) - block[i].begin();
  }
  return k;
}
void change(int L, int R) {
  int lb = bnt[L], rb = bnt[R], oldl = A[L], oldr = A[R];
  if (lb == rb) {
    for (int& x : block[lb]) {
      if (x == oldl)
        x = oldr;
      else if (x == oldr)
        x = oldl;
    }
    sort(block[lb].begin(), block[lb].end());
  } else {
    for (int& x : block[lb])
      if (x == oldl) {
        x = oldr;
        break;
      }
    for (int& x : block[rb])
      if (x == oldr) {
        x = oldl;
        break;
      }
    sort(block[lb].begin(), block[lb].end());
    sort(block[rb].begin(), block[rb].end());
  }
  swap(A[L], A[R]);
}
int main() {
  init();
  long long ans = 0;
  for (int i = 1; i <= m; i++) {
    int L, R;
    scanf("%d%d", &L, &R);
    if (L == R) {
      printf("%lld\n", ans);
      continue;
    }
    if (L > R) swap(L, R);
    if (L + 1 <= R - 1)
      ans += (query(L + 1, R - 1, A[R]) * 2 - query(L + 1, R - 1, A[L]) * 2);
    ans += (A[L] < A[R] ? 1 : -1);
    change(L, R);
    printf("%lld\n", ans);
  }
  return 0;
}
