import math def extended_gcd(a, b): old_r, r = a, b old_s, s = 1, 0 old_t, t = 0, 1 while r != 0: quotient = old_r // r old_r, r = r, old_r - quotient * r old_s, s = s, old_s - quotient * s old_t, t = t, old_t - quotient * t return old_r, old_s, old_t def combine(current_rem, current_mod, new_c, new_b): g = math.gcd(current_mod, new_b) if (current_rem - new_c) % g != 0: return None lcm = current_mod // g * new_b a = (new_c - current_rem) // g m_div_g = current_mod // g b_div_g = new_b // g g_inv, inv, _ = extended_gcd(m_div_g, b_div_g) inv %= b_div_g k = (a * inv) % b_div_g new_rem = current_rem + k * current_mod new_rem %= lcm return (new_rem, lcm) def main(): import sys input = sys.stdin.read().split() ptr = 0 N = int(input[ptr]) ptr += 1 M = int(input[ptr]) ptr += 1 conditions = [] for _ in range(M): b = int(input[ptr]) c = int(input[ptr + 1]) ptr += 2 conditions.append((b, c)) current_rem = 0 current_mod = 1 for b, c in conditions: new_b = b new_c = c % new_b res = combine(current_rem, current_mod, new_c, new_b) if res is None: print("NaN") return current_rem, current_mod = res if current_rem <= N: print(current_rem) else: print("NaN") if __name__ == '__main__': main()