#include <bits/stdc++.h>
using namespace std;
long long h[100010], d[100010];
int main() {
  long long n, m, i, z = -1, d1, h1;
  cin >> n >> m;
  for (i = 1; i <= m; i++) cin >> d[i] >> h[i];
  for (i = 1; i < m; i++)
    if (d[i + 1] - d[i] < (abs(h[i + 1] - h[i]))) {
      cout << "IMPOSSIBLE";
      return 0;
    }
  z = max(z, h[1] + d[1] - 1);
  z = max(z, (h[m] + n - d[m]));
  for (i = 2; i <= m; i++)
    if (h[i - 1] > h[i]) {
      h1 = abs(h[i - 1] - h[i]);
      d1 = (d[i] - d[i - 1]) - h1;
      z = max(z, (d1 / 2) + h[i - 1]);
    } else {
      h1 = abs(h[i - 1] - h[i]);
      d1 = (d[i] - d[i - 1]) - h1;
      z = max(z, (d1 / 2) + h[i]);
    }
  cout << z;
  return 0;
}
