import fractions def read_data(): N = int(input()) K = int(input()) amida = list(range(N)) for k in range(K): x, y = map(int, input().split()) amida[x-1], amida[y-1] = amida[y-1], amida[x-1] return N, amida def solve(N, amida): cycles = [0] * N for idx in range(N): if cycles[idx]: continue find_cycle(N, amida, idx, cycles) uniq_cycles = set(cycles) lcm = 1 for c in uniq_cycles: lcm = lcm * c // fractions.gcd(lcm, c) return lcm def find_cycle(N, amida, idx, cycles): a = amida[idx] count = 1 path = [idx] while a != idx: path.append(a) a = amida[a] count += 1 for a in path: cycles[a] = count N, amida = read_data() print(solve(N, amida))