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