local mfl = math.floor local function getgcd(x, y) while 0 < x do x, y = y % x, x end return y end local function getlcm(x, y) local gcd = getgcd(x, y) return mfl(x / gcd) * y end local n, m = io.read("*n", "*n") local x, _y = {}, 0 for i = 1, m do x[i], _y = io.read("*n", "*n") end local t = {} for i = 1, n do local p = i for j = 1, m do if x[j] == p then p = p + 1 elseif x[j] + 1 == p then p = p - 1 end end t[i] = p end local function solve(a) local c = 1 local p = t[a] while p ~= a do c = c + 1 p = t[p] end return c end local lcm = 1 for i = 1, n do lcm = getlcm(lcm, solve(i)) end print(lcm)