#include <bits/stdc++.h>
using namespace std;
long long q, n, m, a[200001], c[20];
vector<long long> v[200001];
bool b[200001];
void dfs(long long xf) {
  if (b[xf]) return;
  c[2] = max(c[2], xf);
  b[xf] = 1;
  for (int i = 0; i < v[xf].size(); i++) {
    dfs(v[xf][i]);
  }
  return;
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    cin >> c[1] >> c[2];
    v[c[1]].push_back(c[2]);
    v[c[2]].push_back(c[1]);
  }
  c[1] = 0;
  c[2] = 0;
  for (int i = 1; i <= n; i++) {
    if (!b[i]) {
      c[2] = i;
      dfs(i);
      for (int t = i; t <= c[2]; t++) {
        if (!b[t]) {
          c[1]++;
          dfs(t);
        }
      }
    }
  }
  cout << c[1];
  return 0;
}
