#include <bits/stdc++.h>
using namespace std;
inline int scn() {
  int hg;
  scanf("%d", &hg);
  return hg;
};
inline long long llsc() {
  long long hg;
  scanf("%I64d", &hg);
  return hg;
};
const int INF = 1000 * 1000 * 1000 * 2;
const int MOD = 1000 * 1000 * 1000 + 7;
const long double PI = acos((long double)-1.0);
const int N = 100 * 1000 + 6;
int gcd(int a, int b) {
  while (b) {
    a %= b;
    swap(a, b);
  }
  return a;
}
string YES = "Possible", NO = "Impossible";
vector<pair<int, int> > v;
int main() {
  ios_base::sync_with_stdio(false);
  cout.precision(13);
  int n, m;
  cin >> n >> m;
  if (n == 1) {
    cout << NO << endl;
    return 0;
  }
  if (n == 2) {
    if (m == 1) {
      cout << YES << endl << "1 2" << endl;
      return 0;
    }
    cout << NO << endl;
    return 0;
  }
  m -= n - 1;
  if (m < 0) {
    cout << NO << endl;
    return 0;
  }
  for (int i = 0; i < n - 1; i++) {
    v.push_back({1, i + 2});
  }
  for (int i = 3; i <= n && m; i++) {
    for (int j = 2; j < i && m; j++) {
      if (gcd(i, j) == 1) {
        m--;
        v.push_back({i, j});
      }
    }
  }
  if (m) {
    cout << NO << endl;
    return 0;
  }
  cout << YES << endl;
  for (int i = 0; i < v.size(); i++) {
    cout << v[i].first << " " << v[i].second << endl;
  }
  return 0;
}
