#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-9;
const int MaxN = int(1e5) + 256;
const int MOD = int(1e9) + 7;
int h[MaxN], d[MaxN];
long long get(long long h1, long long h2, long long d1, long long d2) {
  if (h2 < h1) swap(h2, h1);
  long long k = h2 - h1 + 1;
  long long l = d2 - d1 + 1;
  if (k > l) {
    return -1;
  }
  long long res = max(h1, h2);
  if (k == l) return res;
  long long q = l - k;
  return max(res + q / 2ll, res);
}
int main() {
  long long n, m;
  cin >> n >> m;
  for (int i = 0; i < m; ++i) {
    scanf("%d%d", d + i, h + i);
  }
  long long res = 0;
  if (d[0] != 1) res = h[0] + d[0] - 1;
  for (int i = 0; i < m - 1; ++i) {
    if (get(h[i], h[i + 1], d[i], d[i + 1]) != -1) {
      res = max(res, get(h[i], h[i + 1], d[i], d[i + 1]));
    } else {
      puts("IMPOSSIBLE");
      return 0;
    }
  }
  res = max(res, 1ll * h[m - 1] + (n - d[m - 1]));
  cout << res;
  return 0;
}
