#include <bits/stdc++.h>
using namespace std;
long long int gcd(long long int a, long long int b) {
  if (a > b) swap(a, b);
  if (a == 0) return b;
  if (a == 1) return 1;
  return gcd(b % a, a);
}
vector<pair<long long int, long long int> > edges;
signed main() {
  long long int n, m;
  cin >> n >> m;
  if (m < n - 1) {
    cout << "Impossible" << '\n';
    return 0;
  }
  for (long long int i = 1; i < n; i++) {
    edges.push_back(make_pair(i, i + 1));
  }
  m -= n - 1;
  long long int i = 1;
  while (m > 0 && i <= n) {
    for (long long int j = i + 2; j <= n; j++) {
      if (m <= 0) break;
      if (gcd(i, j) == 1) {
        edges.push_back(make_pair(i, j));
        m--;
      }
    }
    if (m <= 0) break;
    i++;
  }
  if (m)
    cout << "Impossible" << '\n';
  else {
    cout << "Possible" << '\n';
    for (auto i : edges) {
      cout << i.first << " " << i.second << '\n';
    }
  }
}
