#include <bits/stdc++.h>
using namespace std;
int n, m;
int d[100005], h[100005];
int aps(int x) {
  if (x < 0) return -x;
  return x;
}
int Best(int i, int j) {
  int h1, h2, d1, d2;
  if (h[i] > h[j]) {
    h1 = h[j], h2 = h[i];
  } else {
    h1 = h[i], h2 = h[j];
  }
  d1 = min(d[j], d[i]);
  d2 = max(d[i], d[j]);
  int dif = h2 - h1;
  h1 += dif;
  d1 += dif;
  int d = d2 - d1;
  int inc = d / 2;
  return h1 + inc;
}
int main() {
  scanf("%d %d", &n, &m);
  for (int i = 1; i <= m; i++) {
    scanf("%d %d", &d[i], &h[i]);
  }
  for (int i = 2; i <= m; i++) {
    if (aps(h[i] - h[i - 1]) > aps(d[i] - d[i - 1])) {
      cout << "IMPOSSIBLE" << endl;
      return 0;
    }
  }
  int maks = -1;
  maks = max(maks, h[1] + d[1] - 1);
  maks = max(maks, h[m] + (n - d[m]));
  for (int i = 2; i <= m; i++) {
    maks = max(maks, Best(i, i - 1));
  }
  cout << maks << endl;
  return 0;
}
