#include <bits/stdc++.h>
using namespace std;
vector<int> ans;
int n, m, v, e, p, q;
int a[1000010];
int b[1000010];
string s;
int main() {
  cin >> n >> m;
  int check = 0;
  int res = 0;
  for (int i = 1; i <= m; i++) {
    scanf("%d %d", &a[i], &b[i]);
    res = max(res, b[i]);
  }
  for (int i = 2; i <= m; i++) {
    int d1, d2, h1, h2;
    d1 = a[i - 1];
    h1 = b[i - 1];
    d2 = a[i];
    h2 = b[i];
    int h;
    if (h2 > h1) {
      h = h2 - h1;
      d1 = d1 + h;
      if (d1 > d2) {
        printf("IMPOSSIBLE");
        return 0;
      }
      res = max(res, h2 + (d2 - d1 - 1) / 2 + (d2 - d1 - 1) % 2);
    } else {
      h = h1 - h2;
      d2 = d2 - h;
      if (d2 < d1) {
        printf("IMPOSSIBLE");
        return 0;
      }
      res = max(res, h1 + (d2 - d1 - 1) / 2 + (d2 - d1 - 1) % 2);
    }
  }
  res = max(b[m] + n - a[m], res);
  res = max(b[1] + a[1] - 1, res);
  printf("%d", res);
}
