#include <bits/stdc++.h>   using ll = long long int;   int main() {     int n, m;     std::cin >> n >> m;     std::vector<std::vector<int>> matr1(n);     std::vector<std::vector<int>> matr2(n);     std::vector<std::vector<int>> matr_min(n);     std::vector<std::vector<int>> matr_max(n);     for (int i = 0; i < n; i++) {       matr1[i].resize(m);       matr2[i].resize(m);       matr_min[i].resize(m);       matr_max[i].resize(m);     }     for (int i = 0; i < n; i++) {       for (auto &it : matr1[i]) {         std::cin >> it;       }     }     for (int i = 0; i < n; i++) {       for (auto &it : matr2[i]) {         std::cin >> it;       }     }     for (int i = 0; i < n; i++) {       for (int z = 0; z < m; z++) {         matr_min[i][z] = std::min(matr1[i][z], matr2[i][z]);         matr_max[i][z] = std::max(matr1[i][z], matr2[i][z]);       }     }     for (int i = 0; i < n; i++) {       for (int z = 0; z < m; z++) {         if (z - 1 >= 0 && matr_min[i][z - 1] >= matr_min[i][z]) {           std::cout <<  Impossible  << std::endl;           return 0;         }         if (i - 1 >= 0 && matr_min[i - 1][z] >= matr_min[i][z]) {           std::cout <<  Impossible  << std::endl;           return 0;         }         if (z - 1 >= 0 && matr_max[i][z - 1] >= matr_max[i][z]) {           std::cout <<  Impossible  << std::endl;           return 0;         }         if (i - 1 >= 0 && matr_max[i - 1][z] >= matr_max[i][z]) {           std::cout <<  Impossible  << std::endl;           return 0;         }       }     }     std::cout <<  Possible  << std::endl;   }   