import math def lcm(a: int, b: int) -> int: return a // math.gcd(a, b) * b # 乗算前に割ることでオーバーフローを防ぐ size = (1 << 18) N = int(input()) A = list(map(int, input().split())) seg = [1] * (size * 2) for i in range(N): seg[i + size] = A[i] for i in range(size - 1, 0, -1): seg[i] = lcm(seg[i * 2], seg[i * 2 + 1]) Q = int(input()) F = 1 MOD = 998244353 for i in range(Q): a, b = map(int, input().split()) l = a * F % MOD r = b * F % MOD l %= N r %= N if l > r: l, r = r, l r += 1 l += size r += size res = 1 while l < r: if l & 1: res = lcm(res, seg[l]) l += 1 if r & 1: r -= 1 res = lcm(res, seg[r]) l //= 2 r //= 2 F = res % MOD print(F)