#include <bits/stdc++.h>
const double E = exp(1);
const int maxn = 1e6 + 10;
using namespace std;
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
long long vis[maxn][2];
int main(int argc, char const *argv[]) {
  ios::sync_with_stdio(false);
  long long n, m;
  cin >> n >> m;
  memset(vis, 0, sizeof(vis));
  if (m < n - 1)
    cout << "Impossible" << endl;
  else {
    long long k = 0;
    for (long long i = 1; i < n; i++)
      for (long long j = i + 1; j <= n; j++) {
        if (gcd(i, j) == 1) {
          vis[k][0] = i;
          vis[k][1] = j;
          k++;
          if (k > m) break;
        }
      }
    if (k < m)
      cout << "Impossible" << endl;
    else {
      cout << "Possible" << endl;
      for (int i = 0; i < m; i++) {
        cout << vis[i][0] << " " << vis[i][1] << endl;
      }
    }
  }
  return 0;
}
