from collections import deque def check_connectivity(adj, n): vis = [False for _ in range(n)] def dfs(x): vis[x] = True for v in adj[x]: if not vis[v]: dfs(v) dfs(0) return all(vis) def check_cthulhu(adj, degree, n): marked = [False for _ in range(n)] dq = deque([]) for i, d in enumerate(degree): if d == 1: dq.append(i) marked[i] = True while len(dq) != 0: i = dq.popleft() for v in adj[i]: if not marked[v]: degree[v] -= 1 if degree[v] == 1: dq.append(v) marked[v] = True # if all are marked it means that there was no cycle if all(marked): return False # if some of the non-marked vertices does not have degree 2, it is not a simple cycle for v in range(n): if not marked[v] and degree[v] != 2: return False return True n, m = map(int, input().split()) adj = [[] for _ in range(n)] degree = [0] * n for i in range(m): u, v = map(int, input().split()) u -= 1 v -= 1 adj[u].append(v) adj[v].append(u) degree[u] += 1 degree[v] += 1 if not check_connectivity(adj, n) or not check_cthulhu(adj, degree, n): print("OFFLINE") else: print("ONLINE")