import sys sys.setrecursionlimit(1000000) h, w, n = map(int, input().split()) edge = [[] for _ in range(h + w)] for idx in range(1, n+1): x, y = [int(i) - 1 for i in input().split()] y = y + h edge[x].append((y, idx)) edge[y].append((x, idx)) visited = [False] * (h + w) parent = [None] * (h + w) def output(start): t = [] i = start while True: i, site = parent[i] t.append(site) if i == start: break if i >= h: t = t[1:] + t[:1] print(len(t)) print(*t) def dfs(start): stack = [(-1, start)] while stack: prev, i = stack[-1] stack.pop() if visited[i]: return i visited[i] = True for j, idx in edge[i]: if j == prev: continue stack.append((i, j)) parent[j] = (i, idx) return -1 for i in range(h + w): if not visited[i]: result = dfs(i) if result != -1: output(result) exit() print(-1)