#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <math.h>
#include <bitset>
#include <algorithm>
#include <climits>
using namespace std;
#define ll long long
const int N=2e5+10;
int n,q,bl[N],val[N],S;
vector<int>v[N];
void change(int x,int y){
if(bl[x]!=bl[y]){
v[bl[x]].erase(lower_bound(v[bl[x]].begin(),v[bl[x]].end(),val[x]));
v[bl[x]].insert(lower_bound(v[bl[x]].begin(),v[bl[x]].end(),val[y]),val[y]);
v[bl[y]].erase(lower_bound(v[bl[y]].begin(),v[bl[y]].end(),val[y]));
v[bl[y]].insert(lower_bound(v[bl[y]].begin(),v[bl[y]].end(),val[x]),val[x]);
}
swap(val[x],val[y]);
}
int query(int l,int r,int x){
if(l>r) return 0;
int res=0;
for(int i=l;i<=min(r,bl[l]*S);i++) res+=(val[i]<x);
if(bl[l]==bl[r]) return res;
for(int i=(bl[r]-1)*S+1;i<=min(r,bl[r]*S);i++) res+=(val[i]<x);
for(int i=bl[l]+1;i<=bl[r]-1;i++){res+=lower_bound(v[i].begin(),v[i].end(),x)-v[i].begin();}
return res;
}
int main(){
scanf("%d%d",&n,&q);
S=sqrt(n);
for(int i=1;i<=n;i++){bl[i]=(i-1)/S+1;val[i]=i;v[bl[i]].push_back(i);}
ll res=0;
while(q--){
int l,r;scanf("%d%d",&l,&r);if(l>r) swap(l,r);
if(l==r) printf("%lld\n",res);
else{
if(val[l]<val[r]) ++res;else --res;
res+=2*(query(l+1,r-1,val[r])-query(l+1,r-1,val[l]));
change(l,r);
printf("%lld\n",res);
}
}
}