#include <bits/stdc++.h>
using namespace std;
int n, m;
struct node {
  int u, v;
} a[100005];
int gcd(int x, int y) { return y ? gcd(y, x % y) : x; }
int main() {
  scanf("%d %d", &n, &m);
  int flag = 0;
  int cnt = 0;
  if (n - 1 > m) {
    printf("Impossible\n");
    return 0;
  }
  for (int i = 1; i <= n; i++) {
    for (int j = i + 1; j <= n; j++) {
      if (gcd(i, j) == 1) {
        a[cnt].u = i, a[cnt].v = j;
        cnt++;
        if (cnt == m) {
          flag = 1;
          break;
        }
      }
    }
    if (flag) break;
  }
  if (flag) {
    printf("Possible\n");
    for (int i = 0; i < m; i++) {
      printf("%d %d\n", a[i].u, a[i].v);
    }
  } else {
    printf("Impossible\n");
  }
  return 0;
}
