import java.util.* fun main() { val (n, r) = readInts() val a = List(r) { readInts().map { it <= n } } val left = a[0].indices.filter { a[0][it] } val right = a[0].indices.filter { !a[0][it] } require(left.size == n) require(right.size == n) val g = Array(n) { x-> BooleanArray(n) { y -> a.all { it[left[x]] != it[right[y]] }} } val mt = IntArray(n) { -1 } val used = BooleanArray(n) { false } fun dfs(v: Int) : Boolean { if (used[v]) return false used[v] = true for (i in 0 until n) { if (!g[v][i]) continue if (mt[i] == -1 || dfs(mt[i])) { mt[i] = v return true } } return false } for (i in 0 until n) { Arrays.fill(used, false) if (!dfs(i)) { println("impossible") return } } println("possible") } private fun readInt() = readln().toInt() private fun readLongs() = readStrings().map { it.toLong() } private fun readStrings() = readln().split(" ") private fun readInts() = readStrings().map { it.toInt() }