--- /dev/null
+#include <bits/stdc++.h>
+
+using namespace std;
+
+int M, N;
+vector<int> todo[1000005];
+bool done[1000005];
+
+void dfs(int x) {
+ if (done[x]) {
+ return;
+ }
+ if (x == N * M) {
+ cout << "yes" << endl;
+ exit(0);
+ }
+ done[x] = 1;
+ for (int& t : todo[x]) {
+ dfs(t);
+ }
+}
+
+int main() {
+ cin.tie(0)->sync_with_stdio(0);
+ cin >> M >> N;
+ for (int i = 1; i <= M; i++) {
+ for (int j = 1; j <= N; j++) {
+ int x;
+ cin >> x;
+ todo[i * j].push_back(x);
+ }
+ }
+ dfs(1);
+ cout << "no" << endl;
+}
\ No newline at end of file
-from queue import Queue
+from queue import LifoQueue
from math import sqrt
# from functools import lru_cache
for i in range(M):
room.append(tuple(map(int, input().split())))
-q = Queue()
+q = LifoQueue()
q.put((0, 0))