#include <bits/stdc++.h>
using namespace std;
const int MAX = 50 + 5;
int a[MAX][MAX], b[MAX][MAX];
int c[MAX][MAX], d[MAX][MAX];
int n, m;
bool ok(int x[MAX][MAX]) {
  for (int i = int(1); i < int(n + 1); i++) {
    for (int j = int(2); j < int(m + 1); j++) {
      if (x[i][j] <= x[i][j - 1]) return false;
    }
  }
  for (int j = int(1); j < int(m + 1); j++) {
    for (int i = int(2); i < int(n + 1); i++) {
      if (x[i][j] <= x[i - 1][j]) return false;
    }
  }
  return true;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> m;
  for (int i = int(1); i < int(n + 1); i++) {
    for (int j = int(1); j < int(m + 1); j++) {
      cin >> a[i][j];
    }
  }
  for (int i = int(1); i < int(n + 1); i++) {
    for (int j = int(1); j < int(m + 1); j++) {
      cin >> b[i][j];
      c[i][j] = min(a[i][j], b[i][j]);
      d[i][j] = max(a[i][j], b[i][j]);
    }
  }
  cout << (ok(c) && ok(d) ? "Possible" : "Impossible") << endl;
  return 0;
}
