#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, m, i, j;
  bool flag_row = false, flag_col = false;
  cin >> n >> m;
  int m1[n][m], m2[n][m];
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      cin >> m1[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      cin >> m2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      if (m1[i][j] > m2[i][j]) swap(m1[i][j], m2[i][j]);
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < m - 1; j++) {
      if (m1[i][j] >= m1[i][j + 1]) {
        flag_row = true;
        break;
      }
    }
  }
  for (i = 0; i < m; i++) {
    for (j = 0; j < n - 1; j++) {
      if (m1[j][i] >= m1[j + 1][i]) {
        flag_col = true;
        break;
      }
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < m - 1; j++) {
      if (m2[i][j] >= m2[i][j + 1]) {
        flag_row = true;
        break;
      }
    }
  }
  for (i = 0; i < m; i++) {
    for (j = 0; j < n - 1; j++) {
      if (m2[j][i] >= m2[j + 1][i]) {
        flag_col = true;
        break;
      }
    }
  }
  if (!flag_col && !flag_row) {
    cout << "Possible" << endl;
  } else {
    cout << "Impossible" << endl;
  }
  return 0;
}
