#include<bits/stdc++.h>
using namespace std;
int const N=1e6+5;
class Graph{
private:
int v;
vector<vector<int>> gra;
public:
Graph(int num):v(num)
{
gra.resize(v,vector<int>(v,0));
}
void addedge(int x,int y)
{
gra[x][y]=1;
gra[y][x]=1;
}
bool check(int x,int y)
{
return gra[x][y];
}
};
int cut[N]={0};
int main()
{
int n,m;
cin>>n>>m;
int x,y;
int cou=1;
cut[0]=1;
Graph G(n+1);
int ans=n;
for(int i=1;i<=m;i++)
{
cin>>x>>y;
G.addedge(x,y);
}
for(int i=1;i<n;i++)
{
if(!G.check(i,i+1))
{
cut[cou]=i+1;
cou++;
}
}
cut[cou]=n+1;
for(int i=0;i<=cou;i++)
{
if((cut[i+1]-cut[i])>=3)
{
bool ch=true;//判断是否是第一次三连
int start=1;
for(int j=cut[i];j<=cut[i+1]-3;j++)
{
if(G.check(j,j+2))
{
if(ch)
{
start=j;
}else{
for(int o=j-1;o>=start;o--)
{
if(G.check(j+2,o))
{
if()
}else{
}
}
}
}else{
ans+=1;
ch=true;
}
}}else{
ans+=1;
}
cout<<endl;
}
return 0;
}