#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 7;
struct day {
  int d, l;
} s[maxn];
int main() {
  int n, m, i;
  cin >> n >> m;
  cin >> s[0].d >> s[0].l;
  bool flag = false;
  for (i = 1; i < m; i++) {
    cin >> s[i].d >> s[i].l;
    if (abs(s[i].l - s[i - 1].l) > (s[i].d - s[i - 1].d)) flag = true;
  }
  if (flag) {
    return puts("IMPOSSIBLE"), 0;
  }
  int ans = 0;
  if (m == 1) {
    ans = max(s[0].l + n - s[0].d, s[0].l + s[0].d - 1);
    cout << ans << endl;
    return 0;
  }
  for (int j = 0; j < m - 1; j++) {
    int da = s[j + 1].d - s[j].d;
    int tmp = da - s[j + 1].l + s[j].l;
    ans = max(s[j + 1].l + tmp / 2, ans);
  }
  ans = max(s[m - 1].l + n - s[m - 1].d, ans);
  ans = max(s[0].l + s[0].d - 1, ans);
  cout << ans << endl;
  return 0;
}
